-
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
-
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 :-/)
-
Es geht wirklich !
Ich dachte schon mein Java mag das nicht machen.. Danke für die schnelle und kompetente Antwort.
Gruß Tobi
-
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!
-
04.05.07 11:18 #5
- 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
-
04.05.07 11:23 #6
- Registriert seit
- Mar 2005
- Beiträge
- 743
Tut mir leid fürs Frage. Die Klasse ist doch implementiert.
Gruß
erkann


-
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
-
04.05.07 13:06 #8
- 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
-
Ja, ist ein Einstellungsfehler. Web.de (und die meisten anderen, die Authentifizierung verlangen), will den Kontakt nicht zu Port 25, sondern zu Port 587.
-
04.05.07 13:25 #10
- 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
-
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.
-
04.05.07 14:56 #12
- Registriert seit
- Mar 2005
- Beiträge
- 743
Hallo,
ja du hast richtig geraten:
Code :1 2 3
properties.setProperty( "mail.smtp.port", "587");
Danke
-
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ß
-
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
-
10.05.07 12:49 #15
mail.mime.charset
Siehe auch generell:
http://www.websina.com/bugzero/kb/ja...roperties.htmlCU schnuffie
Fragliche Fragen stellende Fragensteller sind für verantwortungslose Antworten antwortender verantwortlicher Antworter selbst verantwortlich.
Ähnliche Themen
-
Email versenden
Von Ethillias im Forum .NET Windows FormsAntworten: 5Letzter Beitrag: 03.05.10, 17:11 -
Javamail : Normalen String als email recpient rafft exchange server nicht?!
Von Zanderfilet im Forum JavaAntworten: 1Letzter Beitrag: 18.07.08, 11:55 -
javamail/ email mit anhang auslesen
Von HateSociety im Forum JavaAntworten: 1Letzter Beitrag: 15.07.08, 10:01 -
Javamail "vermurkst" Email
Von Quero59 im Forum JavaAntworten: 1Letzter Beitrag: 27.06.08, 08:13 -
eMail versenden mit C#
Von immnn im Forum .NET ArchivAntworten: 3Letzter Beitrag: 13.07.05, 09:35



5Danke

Zitieren

Login





