Email versenden mit Java funktioniert nicht, Fehlermeldungen: MessagingException & SocketException

ltremix

Mitglied
Hallo zsm,

ich habe folgendes Problem.
Ich habe eine Java-Klasse mit der ich Emails versenden kann.

Java:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class SendJavaMail {
	 public static void postMail( String recipient, String subject, String message, String from ) 
			 throws MessagingException{
		 
		 Properties props = new Properties();
		 props.put("mail.smtp.host", "XXX.XXX.de");
		 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);
	 }
	
	 public static void main(String[] args) throws Exception {
		 postMail("XXX@XXX.de", "Test Email", "!Test Betreff", "XXX@XXX.de");
	}
	
}

Die Bibliotheken activation.jar und mail.jar habe ich auch importiert.
Da kommt aber immer die folgende Fehlermeldung:

Exception in thread "main" javax.mail.MessagingException: Could not connect to SMTP host: domint1.stadtdo.de, port: 25;
nested exception is:
java.net.SocketException: Network is unreachable: connect
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
at SendJavaMail.postMail(SendJavaMail.java:19)
at SendJavaMail.main(SendJavaMail.java:23)
Caused by: java.net.SocketException: Network is unreachable: 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:321)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:237)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927)
... 8 more


Wenn ich das Projekt als Liferay-Projekt erzeuge, wird die Mail versendet.
Wenn ich aber ein normales Java-Projekt erzeuge, kommt die obenstehende Fehlermeldung.
Wie kann ich das Problem lösen?
Ich möchte ein normales Java-Projekt erzeugen, weil ich später ein Batch-Skript bauen muss, mit dem ich die Java-Datei ausführen werde. Oder kann man denn die Java-Datei bzw. das Java-Projekt als exe exportieren?
Also, es gibt drei Probleme:
1. Wieso kommt die Fehlermeldung bei einem Java-Projekt und nicht bei einem Liferay-Projekt?
2. Wie kann ich diese Datei mit cmd ausführen?
3. Kann man das als exe exportieren?

Gruß

ltremix
 
Zuletzt bearbeitet:

ltremix

Mitglied
C:\Users\XXX\Desktop\PingServer>java SendJavaMail
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: javax.mail.Address
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 6 more



Dies kommt als Meldung, wenn ich die class-Datei mit cmd ausführe.
 

JavaGott

Gesperrter Benutzer
Naja, die Fehlermeldung aus einem ersten Post ist doch eindeutig...

Could not connect to SMTP host: domint1.stadtdo.de, port: 25

Entweder ist die URL domint1.stadtdo.de nicht bekannt oder es hört auf port 25 nichts oder eine Firewall blockt den Zugang..

Probier einfach mal ein telnet domint1.stadtdo.de 25 auf der commandozeile auszuführen. Wenn das schon nicht gehen wird, dann wird das in deinem Code sowieso nicht funktionieren.
 
Zuletzt bearbeitet:

ltremix

Mitglied
Naja, die Fehlermeldung aus einem ersten Post ist doch eindeutig...

Could not connect to SMTP host: domint1.stadtdo.de, port: 25

Entweder ist die URL domint1.stadtdo.de nicht bekannt oder es hört auf port 25 nichts oder eine Firewall blockt den Zugang..

Probier einfach mal ein telnet domint1.stadtdo.de 25 auf der commandozeile auszuführen. Wenn das schon nicht gehen wird, dann wird das in deinem Code sowieso nicht funktionieren.

Die URL ist schon richtig. Wenn ich den Code in die Klasse eines Liferay-Projektes einfüge, funktioniert es, aber wenn ich den Code in die Klasse eines Java-Projektes einfüge, kommt die Fehlermeldung.

Auf der Kommandozeile wird die Verbindung hergestellt.
 
Zuletzt bearbeitet:

ltremix

Mitglied
DEBUG: JavaMail version 1.4.7
DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
DEBUG: Tables of loaded providers
DEBUG: Providers Listed By Class Name: {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], com.sun.mail.smtp.SMTPTransport=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle], com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], com.sun.mail.imap.IMAPStore=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], com.sun.mail.pop3.POP3Store=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle]}
DEBUG: Providers Listed By Protocol: {imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Oracle], imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle], smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Oracle], pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Oracle], pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Oracle], smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]}
DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: useEhlo true, useAuth false
DEBUG SMTP: trying to connect to host "domint1.stadtdo.de", port 25, isSSL false

Das ist das Ergebnis.
 

JavaGott

Gesperrter Benutzer
Versuch mal "-Djava.net.preferIPv4Stack=true" als Startparameter noch mit zu übergeben.

Wenn das auch nicht hilft: Welche Java Version nutzt du? Ist das zufällig 1.7? Wenn ja, probier das ganze mal mit 1.6

1.7 müsste als default versuchen mit IPv6 eine Verbindung aufzubauen, das könnte natürlich bei dir zu diesem Problem führen, da ich mal davon ausgehe, dass deine eigentliche Netzwerkverbindung IPv4 sein wird....
 
Zuletzt bearbeitet:

ltremix

Mitglied
Java:
System.setProperty("java.net.preferIPv4Stack" , "true");

Das war die Lösung. Dir kann man auch alles fragen. =)

Ich habe jetzt nur noch ein Problem.
Mein Programm ist fertig. Es besteht aus JFrame. Durch das Betätigen eines Buttons soll es einpaar Server von uns anpingen und wenn ein Server nicht erreicht wird, soll das Programm eine Fehlermeldung anzeigen und die Fehlermeldung uns als Emal versenden.
Das Programm habe ich als Jar exportiert mit den Bibliotheken zusammen und habe es in einen Server eingefügt.
Mit einer Batch-Datei auf dem Desktop soll ich die Jar-Datei auf dem Server ausführen.
Das Programm wird geöffnet und es funktionier einwandfrei.
Die Batch-Datei soll ich Kollegen verteilen, damit sie auch die Server überwachen können.
Das Problem ist, wenn sie die Batch-Datei ausführen, das JFRame-Fenster wird nicht geöffnet.
Bei mir funktioniert es aber. Was könnte das Problem sein?

Das ist der Code in der Batch-Datei:

S:
cd \"Team"\Allgemein\Serverueberwachung\Serverueberwachung
start /MIN java -jar Serverueberwachung.jar
 
Zuletzt bearbeitet:

JavaGott

Gesperrter Benutzer
Ohne Fehlermeldung, welche innerhalb des cmd angezeigt wird, kommen wir hier glaub nicht weiter.

Eine mögliche Ursache könnte aber eine falsche Java Version sein. Wenn dein Projekt zb mit 1.7 deployed wurde und die nur 1.6 haben, dann wird das ziemlich sicher in die Hose gehen.

Oder die Pfade passen nicht, die du in der Batch angegeben hast.

Bedeutet: Der output der Batch wäre hilfreich :)

---
Mal was anderes:

Wieso baust du für eine Server Überwachung, die mehrere User gleichzeitig nutzen sollen, ein dezentrales Client Tool?!

Werf das JFrame weg, bau dir eine schöne JSP Seite welche den Output hat wie das JFrame und hoste das ganze auf einem WebSpace.

Vorteile:
1. Zentral
2. Du sparst dir das ständige Verteilen wenn sich mal was ändert
3. Du kannst ein Berechtigungskonzept dahinter klemmen
4. Und vielews mehr :lol:

So braucht keiner ein client Tool von euch und ihr habt eine zentrale Überwachungsseite, erreichbar über den Browser.
 

ltremix

Mitglied
Das wäre für mich einfacher gewesen, dann bräuchte ich die S*****e mit JFrame garnicht zu lernen.
So soll es aber sein.
Der Pfad in der Batch stimmt, weil ich es von meinem Rechner aus ausführen kann.
Die Fehlermeldung kann ich erst am Montag reinstellen, da die Kollegen jetzt weg sind und von meinem Rechner aus alles glatt läuft.
Ich muss ja nicht immer wieder verteilen, wenn sich was verändert hat. Die Jar-Datei liegt ja auf dem Server. Die Kollegen bekommen einmal die Batch, die auf den Server zugreift und die Jar-Datei ausführt.
Ich brauche da nur die Jar-Datei zu verändern, wenn ich das Programm verändern soll.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Email via Googlemail versenden Netzwerkprogrammierung 17
R Email mit Java API Netzwerkprogrammierung 1
D Content einer email in sql-datenbank speichern Netzwerkprogrammierung 9
I Email mit kyrillischen Zeichen in der Betreffzeile Netzwerkprogrammierung 7
L Attachment wird nicht angezeigt in der Email Netzwerkprogrammierung 3
L JavaMail: Automatisches Email Versand (mehrere Empfänger) Netzwerkprogrammierung 4
O email verschicken Netzwerkprogrammierung 8
W Automatisch Email senden Netzwerkprogrammierung 4
H Socket Kann ein Socket server 2 dimensionale Arrays empfangen und versenden? Netzwerkprogrammierung 3
T E-Mail versenden. Netzwerkprogrammierung 8
L Versenden von "Bildschirm" Netzwerkprogrammierung 2
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
precoc String Array versenden Netzwerkprogrammierung 7
B Viele verschiedene E-Mails an unterschiedliche Empfänger schnell versenden? Netzwerkprogrammierung 8
M Mail über Exchange versenden Netzwerkprogrammierung 13
P Dateiennamen versenden Netzwerkprogrammierung 4
P Mit Java Javascript-Anfrage versenden Netzwerkprogrammierung 4
T Objekte im NIO unblocking mode versenden Netzwerkprogrammierung 11
N String als byte Array über Socket versenden Netzwerkprogrammierung 8
N Socket File über Socket vom Server an Client versenden Netzwerkprogrammierung 15
M Socket Datei über Socket versenden Netzwerkprogrammierung 5
C An WebDAV einen "MKCOL" Befehl versenden Netzwerkprogrammierung 4
X Versenden von Objekten braucht zu lange Netzwerkprogrammierung 5
N Technologie zum versenden von Objects Netzwerkprogrammierung 5
Kr0e Versenden von Daten übers Netzwerk Netzwerkprogrammierung 30
R Versenden einer MIME-Datei per E-Mail [solved] Netzwerkprogrammierung 5
N E-mail versenden Netzwerkprogrammierung 4
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
T SWT Image versenden Netzwerkprogrammierung 2
T Einzelne Bits per Socket versenden Netzwerkprogrammierung 16
F Link erzeugen und versenden Netzwerkprogrammierung 4
O Wert versenden? Netzwerkprogrammierung 12
G Datein versenden funktioniert nicht ! Netzwerkprogrammierung 19
S Objekt Felder versenden Netzwerkprogrammierung 5
A Konflikt: Blocking und Non-Blocking bei Objekte versenden Netzwerkprogrammierung 4
O Über Socket Array versenden Netzwerkprogrammierung 5
G Bytes versenden Netzwerkprogrammierung 9
G Datei über ObjectInputStream versenden Netzwerkprogrammierung 8
B Strings versenden | Nur 1 Client Netzwerkprogrammierung 6
P Objekte über DatagramSocket versenden Netzwerkprogrammierung 12
V Kann keine DatagramPackets versenden von einem Jar Archiv Netzwerkprogrammierung 4
J Problem beim versenden von eigenen Objekten über RMI Netzwerkprogrammierung 2
S Dateien versenden Netzwerkprogrammierung 16
C Dateien über Sockets versenden? Netzwerkprogrammierung 10
F IP "versenden" Netzwerkprogrammierung 6
N *.* Dateien versenden im Lan Netzwerkprogrammierung 5
H Versenden von Objekt Netzwerkprogrammierung 2
L JavaMail: Versenden von mails funktioniert nicht Netzwerkprogrammierung 7
P Array per Socketverbindung versenden Netzwerkprogrammierung 2
O Sms versenden Netzwerkprogrammierung 5
T Dateien wia P2P Connection versenden Netzwerkprogrammierung 2
S E-Mails versenden. Netzwerkprogrammierung 10
D Bits über UDP versenden Netzwerkprogrammierung 3
M generelle Frage zum Versenden Netzwerkprogrammierung 4
T Mit JavaMail API Faxe versenden? Netzwerkprogrammierung 5
K Files versenden Netzwerkprogrammierung 5
D HTTP Apache-HttpClient/UNAVAILABLE (java 1.4) Netzwerkprogrammierung 18
M JAX-WS unter Java 17 plötzlich nicht mehr möglich Netzwerkprogrammierung 5
K Java RMI bricht ab wenn Remote eine Methode ausgeführt werden soll Netzwerkprogrammierung 5
M HTTP Let's Encrypt und Java Trust-Store Netzwerkprogrammierung 6
JaXnPriVate Java HTTPS Server (Secure Sockets) Netzwerkprogrammierung 15
Tobero Java serversocket nicht nur zuganglich für localhost Netzwerkprogrammierung 6
D path-Variablen in eine URL hinzufügen mit Java 1.8 Netzwerkprogrammierung 2
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
S Von Java auf passwortgeschützten Server zugreifen + Umgang mit Ports Netzwerkprogrammierung 28
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
x46 Java SSLContext erstellen mit SSL-Zertifikat Netzwerkprogrammierung 1
P Jenkins Login per Java Download Manager Netzwerkprogrammierung 15
N Java socket Programmierung Filme verschicken Netzwerkprogrammierung 20
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
F Verbindung zu einem LDAP Server über Java Netzwerkprogrammierung 4
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
R Anfängerbeispiel: Suche Java-Anwendung die http-Anfragen in Tomcat liest Netzwerkprogrammierung 8
V Browsergame mit Java(WebSocketServer) als Backend? Netzwerkprogrammierung 5
platofan23 Socket Java Socket mit DynDns nicht erreichbar Netzwerkprogrammierung 6
S Fragen zu Java Webservice mit Axis2 Netzwerkprogrammierung 0
M Mit Java Mail Mails an Webmailer schicken Netzwerkprogrammierung 1
mor16Euro HTTP Php website mit Java aktualisiern Netzwerkprogrammierung 6
T HTTP JAVA Browser Konsolenanfrage(JavaScript) Netzwerkprogrammierung 7
L Socket Wie kann man in Java die Anzahl der Objekte in einem InputStream sehen ohne ihn durchgehen zu müssen Netzwerkprogrammierung 1
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
M Socket peer to peer Verbindung zwischen Java und Matlab Netzwerkprogrammierung 0
L Remote Desktop per Java steuern Netzwerkprogrammierung 4
F Server für Java Applikationen Netzwerkprogrammierung 16
J Webserver mit Java schreiben? Netzwerkprogrammierung 4
D JAVA RMI Netzwerkprogrammierung 1
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7
V Kann man mit Hilfe eines Java-Programms den Zugriff auf bestimmte Internetseiten verhinden? Netzwerkprogrammierung 3
J HTTP [Java 9] Neuer HTTP Client - Tutorial Netzwerkprogrammierung 3
T Mikrofonaudio über Java Server an Webbrowser streamen Netzwerkprogrammierung 13
A Bestimmter URL/Certificate per Java immer vertrauen (Trustmanager/HostnameVerifier) Netzwerkprogrammierung 1
T VPN-Verbindung über Java Netzwerkprogrammierung 4
M HTTP PATCH Request mit Java ausführen Netzwerkprogrammierung 2
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
Aruetiise Socket Java Programm auf Server Netzwerkprogrammierung 3
L FTP Java Interpreter unterbindet SSL Handshake Netzwerkprogrammierung 2
C IFrame mit java auslesen Netzwerkprogrammierung 1
A FTP wie kann ich von java auf datei in fpt://192.168.178.1 lesen/schreiben? Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben