JavaMail SMTP Connection

p_alp1

Mitglied
Hallo zusammen.

Ich versuche gerade in einer Webanwendung eine Konfigurationsseite für einen SMTP-Server zu schreiben. Die Oberfläche steht bereits. Allerdings funktioniert die Programmlogik noch nicht so, wie ich mir das dachte. Vom Prinzip her soll es so ablaufen, wie z.B. bei Thunderbird. Ich geben meine Email-Adresse/Benutzername, Passwort, SMTP-Hostname und den Port ein und kann dann die Verbindung testen, bevor ich sie abspeicher. Hier mal mein Code, den ich bisher habe:

Java:
public class SMTPConnection {
       
    public boolean testConnection (String account, String hostname, String password, int port) {               
        try {
            Properties props = new Properties();
                       
            props.put("mail.smtp.starttls.enable", "true");
            props.put("mail.smtp.auth", "true");
            
            Session session = Session.getInstance(props, null);
            session.setDebug(true);
            Transport transport = session.getTransport("smtp");           
            transport.connect(hostname, port, account, password);
            transport.close();
            System.out.println("success");
        } catch (AuthenticationFailedException e) {
            System.out.println("AuthenticationFailedException - for authentication failures");
            e.printStackTrace();
            return false;
        } catch (MessagingException e) {
            System.out.println("for other failures");
            e.printStackTrace();
            return false;
        }
     }
     return true;
}

Gebe ich jetzt z.B. meine Zugangsdaten für mein Gmail-Konto ein (smtp.gmail.com, Port: 587) dann funktioniert alles bestens. Gebe ich jetzt die Daten meines anderen Mail-Kontos ein (smtp.andererServer.com, Port: 25; der Server nutzt Port 25 für TLS) ein und ich weiß 100%ig, dass die ALLE Daten korrekt sind, funktioniert es nicht. Ich hab echt keinen Schimmer woran es liegt. o_O Ich würde mich echt über Hilfe freuen, um eine Lösung zu bekommen, die Allgemein gültig ist und mit allen Eingaben umgehen kann. :)

Viele Grüße und schonmal vielen Dank für jegliche Unterstützung!
 

Dompteur

Top Contributor
Kannst du das "funktioniert es nicht" etwas näher erläutern ?
Was passiert genau ? Gibt es eine Fehlermeldung, einen Stacktrace, .. ?
 

p_alp1

Mitglied
Ich habe hier mal den DEBUG-Output der SMTP-Session:

Code:
DEBUG: setDebug: JavaMail version 1.4.5
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.xxxxx.de", port 25, isSSL false

...und hier noch den zugehörigen Stacktrace:

Code:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.xxxxx.de, port: 25;
  nested exception is:
    java.net.ConnectException: Connection timed out: connect
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
    at javax.mail.Service.connect(Service.java:295)
    at SMTPConnection.testConnection(SMTPConnection.java:13)  
Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(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:319)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:233)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1938)
    ... 4 more

Prinzipiell sieht es ja so aus, als wenn er den Server nicht erreichen kann. Allerdings wenn ich mich zu dem SMTP-Server über meine Mail-App auf dem Handy bzw. über Thunderbird am Rechner anmelde, gibt es überhaupt keine Probleme.

Und noch eine Frage bzgl. meines Codes. Kann dieser allgemein genutzt werden, um sich zu jeglichem SMTP-Server zu verbinden? Besonders im Hinblick auf die Verschlüsselung (ohne, SSL oder TLS).
Quasi wirklich so, wie wenn man seinen Mailclient hat und dort die Serverkonfiguration eingibt.

Grüße!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Fehler bei Javamail Session mit Glassfish 3 Allgemeines EE 3
N JavaMail Problem Allgemeines EE 4
T JavaMail versendet PDFs fehlerhaft Allgemeines EE 7
K mail-extratoc(javamail) Allgemeines EE 3
T JavaMail Programm: Nachricht über Proxy versenden Allgemeines EE 3
A mit JavaMail eine html mail versenden? Allgemeines EE 4
F Javamail mit SSL Allgemeines EE 6
A Listener oder Signal, dass Connection in übergebenen Handler fertig (MessageHandler) Allgemeines EE 1
W Keine Connection mit DB - ganz einfache Testanwendung Allgemeines EE 6
H java selenium test connection refused Allgemeines EE 6
Java.getSkill() verbindung / connection in session speichern Allgemeines EE 4
G DB Connection Timout Allgemeines EE 5
J Tomcat: "Unable to get connection, DataSource invalid&q Allgemeines EE 8
B Connection Poll ohne TomCat Allgemeines EE 5
F MySQL Connection Pool nach Apache Example Allgemeines EE 1
S JDBC Mysql Connection Problem - datasource null Allgemeines EE 3
G DB Connection mit Java Beans Allgemeines EE 6
P J2EE Struts - Database connection failed - Hilfe?:( Allgemeines EE 6
H JNDI Name für die Queue - Connection Factory in JBoss ändern Allgemeines EE 3
B DB Connection schliessen Allgemeines EE 8
K JAVA BEAN DB Connection Prob Allgemeines EE 5
B Struts - Connection Pool - MySQL - JDeveloper Allgemeines EE 2

Ähnliche Java Themen

Neue Themen


Oben