2011-01-14 100 views
2

也有一些是錯誤的:SMTP連接

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

輸出:

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

+0

如果這不是一個學習練習,找一些庫代碼來使用。那裏有很多。 – derobert 2011-01-14 19:10:54

回答

1

220代碼意味着SMTP服務器已準備好接受命令。您正在發出一個HELO命令,並且如果最後一條命令成功,則服務器應以250響應,事實並非如此。嘗試在您的HELO命令後面添加要連接的郵件服務器域。

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

另外,您應該在所有命令之後包含\r\n控制字符。注意命令周圍的雙引號。在這種情況下需要使用\r\n,因爲雙引號會評估變量和控制字符。

+0

+1這是缺少的\ r \ n,這使他的腳本掛起。 – webbiedave 2011-01-14 19:21:40