Avatar billede ygdd Nybegynder
17. januar 2011 - 14:39 Der er 4 kommentarer og
1 løsning

Mail problem med JAVA

Hej jeg sidder og er ved at lave en email klient. Jeg har lavet selve klienten og kan modtage mails osv, men den kode jeg har lavet vil simpelthen ikke afsende mails. Jeg får en del exceptions, men når jeg klikker på dem siger den at de ikke eksisterer, så det er svært at finde info om dem. Er der eventuelt en JAVA-kyndig der har mulighed for at smide koden ind i sit netbeans og se hvad der er galt? Koden kræver at man har javamail installeret/konfigureret.

import java.awt.*;
import java.util.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.mail.*;
import javax.mail.event.*;
import javax.mail.internet.*;

public class EmailSend extends JFrame {

    private JButton     sendButton = new JButton("Send Besked");
    private JLabel         fromLabel = new JLabel("Afsender: ");
    private JLabel         toLabel = new JLabel("Modtager: ");
    private JLabel         hostLabel = new JLabel("SMTP Server: ");
    private JLabel         subjectLabel = new JLabel("Emne: ");
    private JTextField    fromField = new JTextField(40);
    private JTextField    toField = new JTextField(40);
    private JTextField    hostField = new JTextField(40);
    private JTextField    subjectField = new JTextField(40);
    private JTextArea  besked      = new JTextArea(40, 72);
    private JScrollPane jsp          = new JScrollPane(besked);

    public EmailSend( ) {

        super("Send Email");
        Container contentPane = this.getContentPane( );
        contentPane.setLayout(new BorderLayout( )); 



        JPanel labels = new JPanel( );
        labels.setLayout(new GridLayout(4, 1));
        labels.add(hostLabel);



        JPanel fields = new JPanel( );
        fields.setLayout(new GridLayout(4, 1));
        String host = System.getProperty("mail.host", "");
        hostField.setText(host);
        fields.add(hostField);

        labels.add(toLabel);
        fields.add(toField);

        String from = System.getProperty("mail.from", "");
        fromField.setText(from);
        labels.add(fromLabel);
        fields.add(fromField);

        labels.add(subjectLabel);
        fields.add(subjectField);

        Box north = Box.createHorizontalBox( );
        north.add(labels);
        north.add(fields);

        contentPane.add(north, BorderLayout.NORTH);

        besked.setFont(new Font("Monospaced", Font.PLAIN, 12));
        contentPane.add(jsp, BorderLayout.CENTER);

        JPanel south = new JPanel( );
        south.setLayout(new FlowLayout(FlowLayout.CENTER));
        south.add(sendButton);
        sendButton.addActionListener(new SendAction( ));
        contentPane.add(south, BorderLayout.SOUTH);     

        this.pack( );

    }

    class SendAction implements ActionListener {

        public void actionPerformed(ActionEvent evt) {

            try {

                Properties props = new Properties( );
                props.put("mail.host", hostField.getText( ));

                Session mailConnection = Session.getInstance(props, null);
                final Message msg = new MimeMessage(mailConnection);

                Address to = new InternetAddress(toField.getText( ));
                Address from = new InternetAddress(fromField.getText( ));

                msg.setContent(besked.getText( ), "text/plain");
                msg.setFrom(from);
                msg.setRecipient(Message.RecipientType.TO, to);
                msg.setSubject(subjectField.getText( ));

                Runnable r = new Runnable( ) {

                    public void run( ) {

                        try {

                            Transport.send(msg);

                        }

                        catch (Exception ex) {

                            ex.printStackTrace( );

                        }

                    }

                };

                Thread t = new Thread(r);
                t.start( );

                besked.setText("");

            }

            catch (Exception ex) {

                ex.printStackTrace( );

            }



        }



    }


    @SuppressWarnings("deprecation")
    public static void main(String[] args) {

        EmailSend client = new EmailSend( );
        client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        client.show( );

    }
}
Avatar billede ygdd Nybegynder
17. januar 2011 - 14:46 #1
javax.mail.MessagingException: Could not connect to SMTP host: send.one.com, port: 25;
  nested exception is:
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1706)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:525)
    at javax.mail.Service.connect(Service.java:291)
    at javax.mail.Service.connect(Service.java:172)
    at javax.mail.Service.connect(Service.java:121)
    at javax.mail.Transport.send0(Transport.java:190)
    at javax.mail.Transport.send(Transport.java:120)
    at EmailSend$SendAction$1.run(EmailSend.java:112)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:284)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:227)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1672)
    ... 8 more
Avatar billede ygdd Nybegynder
17. januar 2011 - 15:12 #2
Ok, det er åbenbart fordi jeg timer ud til smtp-serveren, så nu skal jeg finde ud af hvordan jeg får det ordnet.
Avatar billede arne_v Ekspert
17. januar 2011 - 15:55 #3
Fejlen er jo meget klar.

Check om du skal brug en anden mail server eller en anden port eller om du skal bruger username/password for at sende email.
Avatar billede ygdd Nybegynder
19. januar 2011 - 14:09 #4
fandt ud af det =)
Avatar billede arne_v Ekspert
19. januar 2011 - 15:27 #5
Saa skriv hvad problemet var.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester