tutorials.de Buch-Aktion 05/2012
Seite 1 von 4 1234 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
48
ZUGRIFFE
52848
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    TobGod TobGod ist offline Mitglied Brokat
    Registriert seit
    Mar 2003
    Beiträge
    372
    Hi, ich habe jetzt stunden bei google geschaut und dieses Forum auch durchforstet. Leider wird immer noch keine E-Mail verschickt. Ich arbeite mit Java und dem GUI Jigloo. Hier mein Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    public class SendJavaMail extends javax.swing.JFrame {
          
        public static void postMail( String recipient,String subject,String message, String from ) throws MessagingException
        {
            Properties props = new Properties();
            props.put("mail.smtp.de [COLOR="red"]Kann das so bleiben ?[/COLOR]", "[COLOR="Red"]Was muss hierrein ?[/COLOR]");
            Session session = Session.getDefaultInstance( props );
            Message msg = new MimeMessage( session );
            InternetAddress addressFrom = new InternetAddress( from );
            msg.setFrom( addressFrom );
            InternetAddress addressTo = new InternetAddress( recipient );
            msg.setRecipient( Message.RecipientType.TO, addressTo );
            msg.setSubject( subject );
            msg.setContent( message, "text/plain" );
            Transport.send(msg);
            
        }

    Ich habe die Bibliotheken Javamail und Activation Framework in das Projekt mit eingebunden. Habe auch keine Fehler im Programm. Habe mir dann einfach einen Button gemacht, der Code davon sieht so aus:

    Code :
    1
    2
    3
    4
    5
    
    try {
         postMail( "[COLOR="red"]Emailadresse vom Empfänger[/COLOR]", "TESTSUBJECT", "TESTTEXT", "FROMME");
    } catch (MessagingException e) {
    cmdFunktioniert.setText("Geht nicht !");
    }

    Tja, es kommt keine Email an mit den Angaben mit denen ich das versuche und es wird immer "Geht nicht!" auf einem Label ausgegeben..

    Welchen SMTP Server muss ich denn angeben und z.B. wenn man den von web.de nimmt, muss ich mich da erst authentifizieren ?

    Danke schonmal für alle Antworten, Gruß Tobi
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Die Properties die du übergeben kannst stehen im Javadoch direkt auf der Übersichtsseite ganz unten: Javamail API

    Der Rest ist fast richtig Für web.de z.B. brauchst du tatsächlich Authentifizierung.

    Habe dir nochmal ein Beispiel fertig gemacht mit dem ich eben eine Mail senden konnte:
    Code java:
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    
    package de.tutorials;
     
    import java.util.Date;
    import java.util.Properties;
     
    import javax.mail.Authenticator;
    import javax.mail.Message;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
     
    /**
     * @author zeja
     */
    public class SendMailExample {
        
        public void sendMail(String smtpHost,String username,String password,String senderAddress,String recipientsAddress,String subject,String text ){
            MailAuthenticator auth = new MailAuthenticator(username, password);
     
            Properties properties = new Properties();
     
            // Den Properties wird die ServerAdresse hinzugefügt
            properties.put("mail.smtp.host", smtpHost);
     
            // !!Wichtig!! Falls der SMTP-Server eine Authentifizierung
            // verlangt
            // muss an dieser Stelle die Property auf "true" gesetzt
            // werden
            properties.put("mail.smtp.auth", "true");
     
            // Hier wird mit den Properties und dem implements Contructor
            // erzeugten
            // MailAuthenticator eine Session erzeugt
            Session session = Session.getDefaultInstance(properties, auth);
     
            try {
                // Eine neue Message erzeugen
                Message msg = new MimeMessage(session);
     
                // Hier werden die Absender- und Empfängeradressen gesetzt
                msg.setFrom(new InternetAddress(senderAddress));
                msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
                        recipientsAddress, false));
     
                // Der Betreff und Body der Message werden gesetzt
                msg.setSubject(subject);
                msg.setText(text);
     
                // Hier lassen sich HEADER-Informationen hinzufügen
                msg.setHeader("Test", "Test");
                msg.setSentDate(new Date( ));
     
                // Zum Schluss wird die Mail natürlich noch verschickt
                Transport.send(msg);
     
            }
            catch (Exception e) {
                e.printStackTrace( );
            }
        }
        
        class MailAuthenticator extends Authenticator {
     
            /**
             * Ein String, der den Usernamen nach der Erzeugung eines
             * Objektes<br>
             * dieser Klasse enthalten wird.
             */
            private final String user;
     
            /**
             * Ein String, der das Passwort nach der Erzeugung eines
             * Objektes<br>
             * dieser Klasse enthalten wird.
             */
            private final String password;
     
            /**
             * Der Konstruktor erzeugt ein MailAuthenticator Objekt<br>
             * aus den beiden Parametern user und passwort.
             * 
             * @param user
             *            String, der Username fuer den Mailaccount.
             * @param password
             *            String, das Passwort fuer den Mailaccount.
             */
            public MailAuthenticator(String user, String password) {
                this.user = user;
                this.password = password;
            }
     
            /**
             * Diese Methode gibt ein neues PasswortAuthentication
             * Objekt zurueck.
             * 
             * @see javax.mail.Authenticator#getPasswordAuthentication()
             */
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(this.user, this.password);
            }
        }
        
        public static void main(String[] args) {
     
            String username = "";
            String password = "";
            String senderAddress ="";//someone@web.de
            String recipientsAddress = ""; //somereceiver@web.de
            String subject = "Test";
            String text = "text";
            String smtpHost = "smtp.web.de";
            
            new SendMailExample().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
        }
    }

    (Falls jemandem die Kommentare einiger Methoden bekannt vorkommen, das sind wohl nicht meine. Ist aber schon länger her dass ich das ganze so genutzt habe, daher weiss ich nicht mehr woher sie kommen :-/)
    Andron, jgraber, Lastlord und 2 weitere bedanken sich. 

  3. #3
    TobGod TobGod ist offline Mitglied Brokat
    Registriert seit
    Mar 2003
    Beiträge
    372
    Es geht wirklich ! Ich dachte schon mein Java mag das nicht machen.. Danke für die schnelle und kompetente Antwort.

    Gruß Tobi
     

  4. #4
    BMo BMo ist offline Mitglied Silber
    Registriert seit
    Jan 2004
    Beiträge
    89
    Blog-Einträge
    1
    Es gibt noch Helden!

    Vielen Dank für den super Code!
    Ich bin jetzt seit 2 Tagen non stop am Emailen, doch es ging und ging nicht!
    Diese sch*** Authentification!
    Vielen Dank!
     

  5. #5
    lernen.2007 lernen.2007 ist offline Mitglied Platin
    Registriert seit
    Mar 2005
    Beiträge
    743
    Hallo,

    den Code wollte ich auch einsetzen, aber irgendwie klappt es nicht. Es erkennt das nicht:

    MailAuthenticator auth = new MailAuthenticator(username, password);

    Es findet die Klasse MailAuthenticator nicht. Obwohl alle imports ja auch passen. Gibt es noch eine Einstellung, das ich übernehmen muss.


    Danke
    erkan
     

  6. #6
    lernen.2007 lernen.2007 ist offline Mitglied Platin
    Registriert seit
    Mar 2005
    Beiträge
    743
    Tut mir leid fürs Frage. Die Klasse ist doch implementiert.

    Gruß
    erkann
     

  7. #7
    Kulabac Kulabac ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    181
    Vielleicht liegt's an der Java-Version? Ich mein die Mail-Sachen sind beim JDK erst ab Version 6 standardmäßig dabei, vorher muss man die sich noch gesondert runterladen und in den Classpath setzen. Also die Klasse MailAuthenticator ist natürlich da (ist ja im Programmcode), aber vielleicht findet er halt die Authenticator-Klasse nicht, von der MailAuthenticator erbt (gibt manchmal die gleiche Fehlermeldung).

    Ich benutz übrigens von Apache die commons-email-1.0.jar Da wird's dann noch einfacher, weil man einfach die setAuthentication-Methode des Mailobjekts aufrufen kann
     

  8. #8
    lernen.2007 lernen.2007 ist offline Mitglied Platin
    Registriert seit
    Mar 2005
    Beiträge
    743
    Hallo,

    jetzt habe ich mit Classpath hinbekommen, aber bekomme immer noch folgende Exceptions:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    avax.mail.MessagingException: Could not connect to SMTP host: smtp.web.de, port: 25;
      nested exception is:
            java.net.ConnectException: Connection timed out: connect
            at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1282)
            at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
            at javax.mail.Service.connect(Service.java:297)
            at javax.mail.Service.connect(Service.java:156)
            at javax.mail.Service.connect(Service.java:105)
            at javax.mail.Transport.send0(Transport.java:168)
            at javax.mail.Transport.send(Transport.java:98)


    Muss ich etwas einstellen oder anders machen?

    Gruß
    erkan
     

  9. #9
    Kulabac Kulabac ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    181
    Ja, ist ein Einstellungsfehler. Web.de (und die meisten anderen, die Authentifizierung verlangen), will den Kontakt nicht zu Port 25, sondern zu Port 587.
     

  10. #10
    lernen.2007 lernen.2007 ist offline Mitglied Platin
    Registriert seit
    Mar 2005
    Beiträge
    743
    Ja habe auch gerade gelesen. Wie kann ich jetzt den Port von 25 auf 587 wechseln?

    Gruß
    erkan
     

  11. #11
    Kulabac Kulabac ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    181
    Wenn ich raten soll würde ich einfach mal oben bei deinen Properties ein

    properties.put("mail.smtp.port", "587");

    probieren. Ich kenn's wie gesagt nur mit der Apache-Lösung und da hatte ich einfach die Methode setSmtpPort, aber die gibt's bei der Standard-Mail-API anscheinend nicht.
     

  12. #12
    lernen.2007 lernen.2007 ist offline Mitglied Platin
    Registriert seit
    Mar 2005
    Beiträge
    743
    Hallo,

    ja du hast richtig geraten:

    Code :
    1
    2
    3
    
     
     
    properties.setProperty( "mail.smtp.port", "587");

    Danke
     

  13. #13
    fragglesb fragglesb ist offline Grünschnabel
    Registriert seit
    May 2007
    Beiträge
    1
    Hallo,

    habe auch ein Problem mit Mails unter Java.
    Vielleicht kann mit da jemand weiterhelfen.

    Versand von Mails unter Java habe ich hinbekommen.
    Sobald ich mein Programm aber unter Linux laufen lassen werden aus meine deutschen Umlauten lauter Sonderzeichen.
    Habe auch schon versucht diese mit der ASCII-Schreibweise darzustellen, leider auch ohne Erfolg.

    Weiß da jemand einen Rat?

    Danke und Gruß
     

  14. #14
    Kulabac Kulabac ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    181
    Für mich klingt es danach, als wenn er unter Linux ein anderes Charset nutzt als unter Windows (wäre auch verständlich solange keins explizit gesetzt ist)

    Tja ... also mit der Apache-Lösung hat man einfach die Methode setCharset(String charset) zur Verfügung. Fragt sich wie das mit der normalen MailAPI geht ... das weiß ich leider auch nicht. Vielleicht hilft ja Google
     

  15. #15
    Avatar von schnuffie
    schnuffie schnuffie ist offline Mitglied Platin
    Registriert seit
    Oct 2004
    Ort
    Ober-Roden (Hessen)
    Beiträge
    725
    mail.mime.charset

    Siehe auch generell:
    http://www.websina.com/bugzero/kb/ja...roperties.html
     
    CU schnuffie

    Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.

Ähnliche Themen

  1. Email versenden
    Von Ethillias im Forum .NET Windows Forms
    Antworten: 5
    Letzter Beitrag: 03.05.10, 17:11
  2. Antworten: 1
    Letzter Beitrag: 18.07.08, 11:55
  3. javamail/ email mit anhang auslesen
    Von HateSociety im Forum Java
    Antworten: 1
    Letzter Beitrag: 15.07.08, 10:01
  4. Javamail "vermurkst" Email
    Von Quero59 im Forum Java
    Antworten: 1
    Letzter Beitrag: 27.06.08, 08:13
  5. eMail versenden mit C#
    Von immnn im Forum .NET Archiv
    Antworten: 3
    Letzter Beitrag: 13.07.05, 09:35