2011-01-14 9 views
2

Es ist etwas falsch mit:SMTP-Verbindung PHP-Fehler mit

$s = fsockopen($mailserver, 25); 
echo '1 > '.fgets($s); 
fwrite($s, 'HELO'); 
echo '2 > '.fgets($s); 
fclose($s); 

Ausgang:

1 > 220 mail.sogetthis.com ESMTP Postfix 2 >

+0

Wenn dies keine Lernübung ist, suchen Sie nach einem Bibliothekscode. Es gibt viel da draußen. – derobert

Antwort

1

Der 220 Code bedeutet, dass der SMTP-Server bereit ist, Befehle zu akzeptieren. Sie geben einen HELO Befehl aus, und der Server sollte mit einer 250 antworten, wenn Ihr letzter Befehl erfolgreich war, was nicht der Fall ist. Versuchen Sie, die Mailserver-Domäne hinzuzufügen, mit der Sie sich nach Ihrem HELO-Befehl verbinden.

fwrite($s, "HELO domain.com\r\n"); 

Darüber hinaus sollten Sie \r\n Steuerzeichen nach alle Befehle enthalten. Beachten Sie die doppelten Anführungszeichen um den Befehl. Dies ist erforderlich, um in diesem Fall \r\n zu verwenden, da doppelte Anführungszeichen Variablen und Steuerzeichen auswerten.

+0

+1 Es ist das fehlende '\ r \ n', das sein Skript zum Hängen bringt. – webbiedave