E-Mails verschicken

Status
Nicht offen für weitere Antworten.

jobu0101

Bekanntes Mitglied
Habe mir zum Thema E-Mails versenden in der Insel Kapitel 16.12 durchgelesen. Doch irgendwie will das Beispielprogramm bei 16.12.5 E-Mails versenden nicht funktionieren: Das ist der Sourcecode der Funktion, die die Mail verschickt:

Code:
	public static void postMail(String recipient, String subject, String message, String from) throws MessagingException {
		Properties props = new Properties();
		props.put("mail.smtp.host", "mail.java-tutor.com"); //Den zweiten String habe ich auch durch meinen wirklichen SMTP-Server ersetzt!
		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);
	}

Folgendes gibt der Eclipse-Debugger aus:
URLClassLoader$1.run() line: 200 [local variables unavailable]
AccessController.doPrivileged(PrivilegedExceptionAction<T>, AccessControlContext) line: not available [native method]
Launcher$AppClassLoader(URLClassLoader).findClass(String) line: 188
Launcher$AppClassLoader(ClassLoader).loadClass(String, boolean) line: 306
Launcher$AppClassLoader.loadClass(String, boolean) line: 268
Launcher$AppClassLoader(ClassLoader).loadClass(String) line: 251
Launcher$AppClassLoader(ClassLoader).loadClassInternal(String) line: 319
SendJavaMail.postMail(String, String, String, String) line: 14
SendJavaMail.main(String[]) line: 25

Könnt ihr mir helfen?
 
G

Guest

Gast
poste mal die zeilen bei denen der compiler einen Fehler meldet (vlt hilfts) :D
 

jobu0101

Bekanntes Mitglied
Anonymous hat gesagt.:
poste mal die zeilen bei denen der compiler einen Fehler meldet (vlt hilfts) :D

Hab ich doch! Zeile 25 ist die Zeile, in der die Funktion aufgerufen wird, die selber beinhaltet ja keinen Fehler, der Fehler scheint in der Funktion zu passieren und Zeile 14 ist Zeile 5 in dem geposteten Code! Der Rest ist gar nicht mehr in meinem Code!
 

HoaX

Top Contributor
dsa was du da gepostet hast ist ein stacktrace vom debugger, wir wollen aber den stacktrace einer exception oder überhaupt einer fehlermeldung. was geht nicht? mal den debug-modus von javamail angeschaltet?
 

jobu0101

Bekanntes Mitglied
HoaX hat gesagt.:
dsa was du da gepostet hast ist ein stacktrace vom debugger, wir wollen aber den stacktrace einer exception oder überhaupt einer fehlermeldung. was geht nicht? mal den debug-modus von javamail angeschaltet?

Der schaltet sich automatisch an und bricht das Programm ab. Wo finde ich denn die Fehlermeldungen?
 

AlArenal

Top Contributor
Dann weißt du ja Bescheid. Abhängigkeiten nicht erfüllt... Vielleicht vorbei mal Doku der Lib lesen, Tutorials anschauen?
 

AlArenal

Top Contributor
jobu0101 hat gesagt.:
AlArenal hat gesagt.:
Dann weißt du ja Bescheid. Abhängigkeiten nicht erfüllt... Vielleicht vorbei mal Doku der Lib lesen, Tutorials anschauen?

Weiß nicht so richtig, was du meinst. Das war bereits ein Beispielprogramm, siehe hier: http://www.galileocomputing.de/open...16_012.htm#mj879abbdee2eae2d2bb8a450af6b9b67a

Lesen bildet:

JavaMail 1.4
(April 25, 2006)

The JavaMail 1.4 release includes many API improvements approved by the Java Community Process via JSR-919. It also includes improvements in MIME parsing performance and support for parsing and constructing Delivery Status Notifications.

Note: You will also need the JavaBeans Activation Framework (JAF) extension that provides the javax.activation package. We suggest you use version 1.1 of JAF, the latest release.

As usual, send feedback to javamail@sun.com.
 

André Uhres

Top Contributor
Bei mir klappt es.
Es fehlt lediglich:
Code:
msg.setSentDate(new Date());
damit die Nachricht auch mit dem aktuellen Datum ankommt.
(In den Project Properties habe ich unter "Java Build Path" | "Libraries" mit "Add External JARs..."
die mail.jar und die activation.jar hinzugefügt.)
 

jobu0101

Bekanntes Mitglied
Habs auch nochmal so gemacht und jetzt kommen folgende Fehler:

Exception in thread "main" javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 must be authenticated

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at Mail.SendJavaMail.postMail(SendJavaMail.java:21)
at Mail.SendJavaMail.main(SendJavaMail.java:25)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 550 must be authenticated

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047)
... 5 more
 

André Uhres

Top Contributor
Ich bin mir nicht sicher, aber das könnte vielleicht hiermit zu tun haben:
Code:
       props.put("mail.user", "name");
        props.put("mail.password", "code");
 

jobu0101

Bekanntes Mitglied
André Uhres hat gesagt.:
Ich bin mir nicht sicher, aber das könnte vielleicht hiermit zu tun haben:
Code:
       props.put("mail.user", "name");
        props.put("mail.password", "code");

Aber es funktioniert bei euch auch ohne?
 

AlArenal

Top Contributor
Wenn du ohne Benutzerdaten über einen öffentlichen SMTP Mails verschicken kannst, darfst du dich jedenfalls nciht wundern, wenn deine Mails nicht ankommen und / oder in Spamfiltern kleben bleiben.

Keiner mag Open Relays...
 

jobu0101

Bekanntes Mitglied
Das Programm kann ja nichtmal ausgeführt werden bei mir! Gibt Compilerfehler! Was benutzt ihr denn für einen SMTP-Server?
 

HoaX

Top Contributor
und welchen compiler fehler? bitte schreib doch mal aussagen anders als "geht nicht"!

jobu0101 hat gesagt.:
Habs auch nochmal so gemacht und jetzt kommen folgende Fehler:

Exception in thread "main" javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 must be authenticated

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at Mail.SendJavaMail.postMail(SendJavaMail.java:21)
at Mail.SendJavaMail.main(SendJavaMail.java:25)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 550 must be authenticated

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047)
... 5 more

da hast dus doch auch kompilieren können ...

edit: ich hab exim4 laufen, aber ich glaube nicht dass dich das auch nur ein stück weiter bringt
 

AlArenal

Top Contributor
jobu0101 hat gesagt.:
Das Programm kann ja nichtmal ausgeführt werden bei mir! Gibt Compilerfehler! Was benutzt ihr denn für einen SMTP-Server?

Dann macht es wenig Sinn über Laufzeitfehler eines nicht ordnungsgemäß kompilierten Programms zu sprechen.

Man benutzt den SMTP-Server für den man Zugangsdaten hat, oder eben den der lokal läuft (wenn einer läuft).
 

jobu0101

Bekanntes Mitglied
Ich habe es hinbekommen eine Mail an bestimmte Adressen zu verschicken. War die Adresse z.B. user@text.de, musste ich folgenden Code schreiben:

Code:
props.put("mail.smtp.host", "mail.test.de");

postMail("user@text.de",...

Das funktionierte aber nur bei sehr wenigen Servern. Wie soll ich es denn bitteschön bei anderen machen? Ich muss doch eigentlich von einem SMTP-Server an alle eine E-Mail schicken können und mir nicht immer einen bestimmten raussuchen müssen!
 

AlArenal

Top Contributor
Aller Wahrscheinlichkeit nach hast du irgendwo einen E-Mail-Account. Wenn das nicht gerade einer ist, den man nur per Webmail benutzen kann, gibts dafür auch Daten für die Einrichtung von E-Mail-Clients. Von denen brauchst du den SMTP-Server, deinen Benutzernamen und zumindest das Passwort müsstest du ja kennen.

Generell ist es nicht die schlechteste Idee sich mit der Funktionsweise von Techniken, die man einsetzen will, zu beschäftigen, ehe / während man sie einsetzt. Du musst ja nicht gleich die ganze RFC 2821 auswendig lernen... ;)
 

jobu0101

Bekanntes Mitglied
AlArenal hat gesagt.:
Aller Wahrscheinlichkeit nach hast du irgendwo einen E-Mail-Account. Wenn das nicht gerade einer ist, den man nur per Webmail benutzen kann, gibts dafür auch Daten für die Einrichtung von E-Mail-Clients. Von denen brauchst du den SMTP-Server, deinen Benutzernamen und zumindest das Passwort müsstest du ja kennen.

Generell ist es nicht die schlechteste Idee sich mit der Funktionsweise von Techniken, die man einsetzen will, zu beschäftigen, ehe / während man sie einsetzt. Du musst ja nicht gleich die ganze RFC 2821 auswendig lernen... ;)

Das weiß ich schon, nur weiß ich nicht wie ich das in den Java-Code einbinde. Was mich auch wundert, ist, dass es sowohl bei den Properties des Session als auch bei der Message die Möglichkeit des Eintragens des Absenders gibt.

Mit
Code:
		props.put("mail.user", "username");
		props.put("mail.password", "pw");
habe ich es schon probiert, funktioniert aber nicht. Wo kommen die Daten jetzt rein?

PS: In der Dokumentation war zwar von mail.user als Propertie, nicht aber von mail.password die Rede!


Was ich jetzt für Fehler erhalte:
Exception in thread "main" javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1196)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:584)
at javax.mail.Transport.send0(Transport.java:169)
at javax.mail.Transport.send(Transport.java:98)
at Mail.SendJavaMail.postMail(SendJavaMail.java:24)
at Mail.SendJavaMail.main(SendJavaMail.java:30)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1047)
... 5 more
 

AlArenal

Top Contributor
Die Fehlermeldung gibts normalerweise wenn die SMTP Authentifizierung nicht aktiviert wird. Wenn der Provider pfiffig ist, kann sie auch geworfen werden wenn du eine Absende-Adresse benutzt, die nicht zu deinem Account passt.
 

jobu0101

Bekanntes Mitglied
user sei mein Benutzername, pw mein Passwort und domain die Domain des SMTP-Servers, wo ich auch meinen Account habe. Ist dann folgende Funktion so richtig:

Code:
public static void postMail(String recipient, String subject, String message, String from) throws MessagingException {
		Properties props = new Properties();
		props.put("mail.smtp.host", "mail."+ domain);
		props.put("mail.user", user);
		props.put("mail.password", pw);
		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);
	}
 

André Uhres

Top Contributor
Ich hatte jetzt auch Probleme mit JavaMail.
Meine IP Adresse war auf zwei Schwarzen Listen: CPL und PBL.
Ich habe sie auf beiden entfernt und jetzt geht's wieder.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Mails verschicken ohne SMTP-Server Allgemeine Java-Themen 18
D mails auch als fax verschicken ? ? ? Allgemeine Java-Themen 2
G mit Java Mails verschicken Allgemeine Java-Themen 7
D kein Versand von Mails mit Anhang mehr Allgemeine Java-Themen 2
T Automatisch Mails versenden Allgemeine Java-Themen 4
B Mails testen Allgemeine Java-Themen 7
S Zeichensatz im Betreff von Mails Allgemeine Java-Themen 7
Mike90 Attachments von Mails downloaden Allgemeine Java-Themen 3
André Uhres Welches Werzkeug benutzt ihr um eure Mails zu lesen? Allgemeine Java-Themen 47
G Mail Konten (E-Mails holen) Allgemeine Java-Themen 5
S Ungelesene Mails mit Java Mail abholen Allgemeine Java-Themen 3
S Verschlüsselte Mails entschlüsseln! Allgemeine Java-Themen 2
G E-Mails versenden Allgemeine Java-Themen 12
G Mails aus TimerTask Allgemeine Java-Themen 6
L Unterschiedliche mails (Daten aus JTable) schicken Allgemeine Java-Themen 14
R Java Mail Abrufen von Mails Allgemeine Java-Themen 2
P E-Mails mittels POP3 abrufen Allgemeine Java-Themen 2
S mails senden? Allgemeine Java-Themen 2
N E-Mail per Java verschicken Allgemeine Java-Themen 2
M String Array Vector komprimieren und verschicken Allgemeine Java-Themen 3
J Wie kann man .txt Files übers Internet verschicken? Allgemeine Java-Themen 53
C Daten über URL an PHP verschicken Allgemeine Java-Themen 4
Mike90 Graph in einer Mail verschicken Allgemeine Java-Themen 7
M Asynchron Events verschicken... Allgemeine Java-Themen 2
G Double Wert über OutputStream verschicken Allgemeine Java-Themen 2
M SMS aus Desktop-Anwendung verschicken Allgemeine Java-Themen 8
G RXTX verschicken einzelener Bytes Allgemeine Java-Themen 8
reibi SMS mit Java verschicken Allgemeine Java-Themen 9
T Audio streamen/verschicken Allgemeine Java-Themen 3
S JavaMail --> HTML-Mail verschicken? Allgemeine Java-Themen 7
A bestimmte Taste an Server verschicken Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben