tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
358
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Metamorphosis Metamorphosis ist offline Grünschnabel
    Registriert seit
    Apr 2011
    Beiträge
    4
    Guten Morgen.

    Ich sitze seit gestern vor einem Problem, wo ich mal erfahrene Hilfe bräuchte.

    Ich bekomme beim ausführen meiner klasse folgende Exception:

    Code :
    1
    2
    3
    
    javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 25;
      nested exception is:
        java.net.ConnectException: Connection refused: connect

    Zum Hintergrund: Ich hab einen lokalen James Mail Server aufgesetzt und das SMTP auf SSL und port 465 geändert. Trotzdem scheint der sich auf port 25 verbinden zu wollen.

    Aufbau der Klasse:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    
    import java.io.*;
     
    import java.util.Properties;
    import javax.mail.*;
     
    public class Mailer extends Authenticator {
        
        public String sender;
        public Session ses;
        public PasswordAuthentication auth;
        
        public Mailer(final String username, final String pass, String host){
            
            sender = username + '@' + host;
            auth = new PasswordAuthentication(username, pass);
            Properties props = new Properties();
            props.put("mail.user", username);
            props.put("mail.pass", pass);
            props.put("mail.host", host);
            props.put("mail.debug", "false");
     
            props.put("mail.store.protocol", "pop3");
     
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.port", "465");
            props.put("mail.smtp.socketFactory.port", "465");
            props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
            props.put("mail.transport.protocol", "smtp");
     
            Session ses = Session.getInstance(props,
                new Authenticator() {
                @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username,pass);
                    }
                });
        }
     
        public void sendMail(String empfaenger, String betreff, String text){
     
            System.out.println("SENDING message from " + sender + " to " + empfaenger);
            System.out.println();
            
            try{
                MimeMessage msg = new MimeMessage(ses);
     
                msg.addRecipients(Message.RecipientType.TO, empfaenger);
                msg.setSubject(betreff);
                msg.setText(text);
     
                Transport.send(msg);
            }catch(Exception e){
     
                System.out.print(e);
            }
        }
    }

    Greetz,

    Metamorphosis
    Geändert von Metamorphosis (27.10.11 um 11:04 Uhr)
     

  2. #2
    SE Tutorials.de Gastzugang
    Ich habe dazu mal ein ausführliches Tutorial geschrieben *findest du auch in meiner Signatur*.
    Da ich den Fehler deutlich sehe denke ich mal das du den Source von dort hast mit welchem auch ich einst begonnen habe.

    Auch solltest du für Java-Code die Java-Tags nutzen *steht auch in meiner Signatur*.

    Das Problem : du erstellst ein Session-Objekt mit den entsprechenden Properties ... soweit ist das kein Problem.
    Welchen schwerwiegenden Fehler du dann aber begehst : du rufst die statische Methode Transport.send(Message) auf.
    Laut Doc hat diese statische Methode aber ihr eigenes Session-Objekt ... dein vorher so mühevoll vorbereitetes Session-Objekt wird also vollkommen ignoriert.

    Da ich jetzt hier nicht alles doppelt schreiben möchte bitte ich dich dir mein Tutorial durchzulesen.
    Falls du Fragen zu diesem hast bitte ich dich diese als Kommentar unter das Tutorial zu schreiben.

    btw : Willkommen im Tutorials.de-Forum


    //EDIT
    Ich habe gerade an dem Zeitpunkt der Bedankung gesehen das du dir mein Tutorial scheinbar bereits angesehen hast. Ich hoffe es hat dir bei der Lösung deines Problems geholfen.
    Ich würde mich noch über eine Bewertung freuen.

    btw : Makiere das Thema bitte als Erledigt wenn dein Problem gelöst ist.
    Geändert von SE (27.10.11 um 12:15 Uhr)
     

  3. #3
    Metamorphosis Metamorphosis ist offline Grünschnabel
    Registriert seit
    Apr 2011
    Beiträge
    4
    Hallo SPiKEe,

    leider hat mir dein Tutorial nicht sonderlich geholfen. Denn selbst wenn ich deine fertige Klasse einfach kopiere und an meinen Mail Server anpasse, haut NetBeans mir Exceptions raus.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    javax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 465;
      nested exception is:
        javax.net.ssl.SSLException: Received fatal alert: internal_error
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
        at javax.mail.Service.connect(Service.java:295)
        at pvd.mail.client.SendMailTLS.main(SendMailTLS.java:30)
    Caused by: javax.net.ssl.SSLException: Received fatal alert: internal_error
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
        at sun.security.ssl.Alerts.getSSLException(Alerts.java:154)
        at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1911)
        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1027)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1262)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1289)
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1273)
        at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:507)
        at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
        ... 3 more

    Aber der James läuft und ist erreichbar. Sobald ich SSL ausmache, und den James wieder auf plain starten lasse, funktioniert alles wunderbar.
     

  4. #4
    SE Tutorials.de Gastzugang
    Das Problem könnte sein das Java dein SSL-Zertifikat nicht akzeptiert. Um das zu umgehen müsstest du die SSLSocketFactory-Klasse überschreiben das diese ALLE Zertifikate akzeptiert.
    Probiere das ganze mal bei einem Provider im Internet aus .. dort sollte es keine Probleme geben.

    *Das ist jetzt aber so ziemlich das einzige was mir bei der Fehlermeldung einfällt.*
     

  5. #5
    Metamorphosis Metamorphosis ist offline Grünschnabel
    Registriert seit
    Apr 2011
    Beiträge
    4
    Hat sich nun erledigt... Es lag am James, da fehlte eine Jar-Datei für die SSL Verbindung.
    Danke nochmals =)

    greetz,
    Metamorphosis
     

Ähnliche Themen

  1. [COM/C++] Problem mit lokalem Server
    Von Muepe32 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 07.06.11, 20:23
  2. htaccess auf lokalem Server?
    Von D@nger im Forum Hosting & Webserver
    Antworten: 4
    Letzter Beitrag: 20.04.06, 14:10
  3. Antworten: 1
    Letzter Beitrag: 27.09.03, 19:30
  4. Antworten: 8
    Letzter Beitrag: 30.03.03, 13:17
  5. Mails vom lokalem Apache Server****?
    Von Phreak im Forum PHP
    Antworten: 3
    Letzter Beitrag: 31.07.01, 19:17