Hoi,
ich versuche eMails per einfacher SMTP Verbindung zu senden. Leider funktioniert es noch nicht ganz - der Server sendet zwar keine Fehlermeldung, die eMail kommt aber auch nie beim Empfänger an.
Die Ausgabe sieht folgendermaßen aus:
Meines Wissens sollte der Server nach DATA den 354 code senden - aber ich kann mich auch irren, da ich noch so gut wie gar nichts über SMTP/Java weiß.
Könnte mir jemand einen Tipp geben was das Problem ist?
Vielen Dank schon mal
Aragos
ich versuche eMails per einfacher SMTP Verbindung zu senden. Leider funktioniert es noch nicht ganz - der Server sendet zwar keine Fehlermeldung, die eMail kommt aber auch nie beim Empfänger an.
Code:
import java.net.*;
import java.io.*;
public class sendMail {
public static void main(String args[]) {
//
// Send mail
//
// sendMail [mail server] [recipient address] [Message]
// mail server can be hostname or IP address
//
// ex. sendMail smtp.company.com [email]myFriend@somewhere.qc.ca[/email] H3ll0w0rld
//
sendMail t = new sendMail();
t.sendMail(args[0], args[1], args[2]);
}
public void sendMail(String mailServer, String recipient, String message) {
try {
Socket s = new Socket(mailServer, 25);
BufferedReader in = new BufferedReader
(new InputStreamReader(s.getInputStream(), "8859_1"));
BufferedWriter out = new BufferedWriter
(new OutputStreamWriter(s.getOutputStream(), "8859_1"));
send(in, out, "HELO theWorld");
// warning : some mail server validate the sender address
// in the MAIL FROm command, put your real address here
send(in, out, "MAIL FROM: <webmaster@aragos.net>");
send(in, out, "RCPT TO: <" + recipient + ">");
send(in, out, "DATA");
send(out, "Subject: " + message);
send(out, "From: Aragos <webmaster@aragos.net>");
send(out, "\n");
// message body
send(out, "Dies ist ein Test. Bitte bestätigen.");
send(out, "\n.\n");
send(in, out, "QUIT");
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void send(BufferedReader in, BufferedWriter out, String s) {
try {
out.write(s + "\n");
out.flush();
System.out.println(s);
s = in.readLine();
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}
public void send(BufferedWriter out, String s) {
try {
out.write(s + "\n");
out.flush();
System.out.println(s);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Die Ausgabe sieht folgendermaßen aus:
Code:
HELO theWorld
220 mail.artfiles.de ESMTP
MAIL FROM: <webmaster@aragos.net>
250 mail.artfiles.de
RCPT TO: <aragos@aragos.de>
250 ok
DATA
250 ok
Subject: H3ll0W0rld
From: Aragos <webmaster@aragos.net>
Dies ist ein Test. Bitte bestätigen.
.
QUIT
354 go ahead
Meines Wissens sollte der Server nach DATA den 354 code senden - aber ich kann mich auch irren, da ich noch so gut wie gar nichts über SMTP/Java weiß.
Könnte mir jemand einen Tipp geben was das Problem ist?
Vielen Dank schon mal
Aragos