PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit SMTP


K21
01.05.2003, 22:16
hi!

ich habe ein kleines programm geschrieben welches sich an einem lokalen mailserver anmelden soll und ne mail verschicken soll...
es ging beim exchangeserver wunderbar, jetzt benutze ich jedoch den "hamster" server welcher scheinbar nicht so fehlertolerant ist wie der exchangeserver...
nun ja ich sende folgendes (habe auch HELO durch EHLO getauscht aber problem bleibt gleich):


outputstream1 = "HELO " + hostname + zeilenende;
outputstream2 = "MAIL FROM:<" + absendermail + ">" + zeilenende;
outputstream3 = "RCPT TO:<" + empfaengermail + ">" + zeilenende;
outputstream4 = "DATA" +zeilenende;
outputstream5 = "From: <" + absendermail + "> " + zeilenende
+ "To: <" + empfaengermail + ">" + zeilenende
+ "Subject: Blag: " + betreffzeile + zeilenende;
outputstream6 = "Text bla \n";
outputstream7 = "betreffzeile";
outputstream8 = zeilenende + "." + zeilenende;
outputstream9 = "QUIT" + zeilenende;

daraufhin bekomme ich folgende fehlermeldung:
2003.05.01 22:04:22 I {9a4} < 554 Transaction failed (missing mail-body)

ich habe nun in der rfc2821 danach gesucht aber irgendwie stehe ich auf dem schlauch was er da von mir will... hört sich zwar sehr simpel an aber irgendwie habe ich keine ahnung was fehlt.. naja vielleicht weiss jemand von euch bescheid?
also beim exchangeserver kam alles richtig an... die subject zeile, der text im body...


Felix Kaiser
02.05.2003, 13:22
Wenn du immer nach jedem Command auf Antwort vom Server wartest und den Fehlercode an diesen Stellen richtig auswertest, sollte es eigentlich gehen.

Ansonsten könntest du ggf. noch folgende Angaben im Mailheader ergänzen: Date und Content-Type.

K21
02.05.2003, 14:14
hmm also ich warte auf die antwort vom server... aber ne auswertung habe ich bisher nicht gemacht ...
muss ich mal gucken ob ich nicht explizit auf den 554er code "ignorierend" reagieren könnte... muss ich nochmal genau in der rfc lesen glaube ich ob das geht...
hm Date und Content-Type .... hab mal danach in der rfc2821 gesucht, aber hab da nix gefunden.. hast du nen link o.ä. wo ich mir angucken kann wie das auszusehen hat bzw. ob es an ner bestimmten stelle gesendet werden muss?

Felix Kaiser
02.05.2003, 19:28
Also mein PHP sendmail tuts in der Reihenfolge:
fputs($smtp,"From: $from ($name)\r\n");
fputs($smtp,"To: $to\r\n");
fputs($smtp,"Date: ".date("D, j M Y H:i:s T")."\r\n");
fputs($smtp,"Subject: $subject\r\n");
fputs($smtp,"Content-Type: text/plain\r\n\r\n");

K21
02.05.2003, 20:09
ich krieg noch das kotzen...
ich poste mal meine gesamte reihenfolge:

send("EHLO " + hostname + zeilenende);
receive();
send("MAIL FROM:<" + absendermail + ">" + zeilenende);
receive();
send("RCPT TO:<" + empfaengermail + ">" + zeilenende);
receive();

GregorianCalendar now = new GregorianCalendar();
String senti = now.getTime().toString();

send("DATA" + zeilenende);
receive();
send("From: <" + absendermail + "> " + zeilenende
+ "To: <" + empfaengermail + ">" + zeilenende
+ "Date: " + senti + zeilenende
+ "Subject: bla:" + zeilenende
+ "Content-Type: text/plain" + zeilenende);

send("Mail vom: " + senti + " \nnur n test \n");
send(zeilenende + "." + zeilenende);
send("QUIT" + zeilenende);
receive();
s.close();

ich denke was die befehle machen ist selbsterklärend ;)

und das fehlerprotokoll vom mailserver:

2003.05.02 20:06:49 I {ba8} < 220 SMTP-Server Classic Hamster Version 2.0 (Build 2.0.0.1)
2003.05.02 20:06:49 I {ba8} > EHLO frip
2003.05.02 20:06:49 I {ba8} < 250-localhost
2003.05.02 20:06:49 I {ba8} < 250-8BITMIME
2003.05.02 20:06:49 I {ba8} < 250-AUTH CRAM-SHA1 CRAM-MD5 LOGIN
2003.05.02 20:06:49 I {ba8} < 250-AUTH=CRAM-SHA1 CRAM-MD5 LOGIN
2003.05.02 20:06:49 I {ba8} < 250 HELP
2003.05.02 20:06:49 I {ba8} > MAIL FROM:<downloads@192.168.0.1>
2003.05.02 20:06:49 I {ba8} < 250 OK
2003.05.02 20:06:49 I {ba8} > RCPT TO:<downloads@192.168.0.1>
2003.05.02 20:06:49 I {ba8} < 250 OK
2003.05.02 20:06:49 I {ba8} > DATA
2003.05.02 20:06:49 I {ba8} < 354 Start mail input; end with <CRLF>.<CRLF>
2003.05.02 20:06:49 WAR {ba8} Verbindung verloren 192.168.0.131:25 (604)
2003.05.02 20:06:49 I {ba8} Verbindung zum Client 192.168.0.131:25 (604) getrennt


ich finde den fehler nicht ... ich reagiere zwar nicht auf die rückgabe, allerdings sollte das ja auch (auf jeden fall wenn alles gut läuft *g*) ohne probleme gehen... senden, empfangen, senden, empfangen ... hmm hast du vielleicht noch ne idee was ich falsch mache ?
kann eigentlich ja nur ne kleinigkeit sein, denn wie gesagt beim exchangeserver gings ja.. der hat den fehler irgendwie wohl "ignoriert"...

Felix Kaiser
03.05.2003, 10:35
Vielleicht nutzt dieser Server Sicherheitsfeatures, die erkennen, dass diese Mail nicht von ihm selber kommt und daher nicht angenommen wird. Probiers mal in dem du einen anderen SMTP Server auf einem anderen Rechner startest und als Absender eine Adresse angibst, die auf diesem Rechner ein Postfach hat.