2012-12-18 82 views

回答

1

這不是不可能的。

您可以自己編寫SMTP交互,並在SMTP協議中檢查確認是否接受了憑據。對於這種方法,您必須與SMTP服務器進行套接字級通信(例如,使用[PHP套接字]服務1)。

要了解SMTP協議如何工作,請嘗試使用Telnet手動完成此操作。

http://technet.microsoft.com/en-us/library/aa995718(v=exchg.65).aspx

+0

嗯,微軟的鏈接,我聽說微軟甚至不聽所有的SMTP標準。但是你已經回答了這個問題。這是可能的,只是有點棘手。 –

+0

@StephenSarcsamKamenar:如果你的谷歌'smtp telnet'也有很多基於Linux的教程,以及:-)我恰巧最近使用那個,所以知道它是完整的。 –

3

有使用PHPMailer最新版本做的一個非常簡單的方法。

require_once 'phpmailer/class.phpmailer.php'; 
require_once 'phpmailer/class.smtp.php'; 

$mail = new PHPMailer(true); 
$mail->SMTPAuth = true; 
$mail->Username = '[email protected]'; 
$mail->Password = 'my_awesome_password'; 
$mail->Host = 'smtp.example.com'; 
$mail->Port = 465; 

// This function returns TRUE if authentication 
// was successful, or throws an exception otherwise 
$validCredentials = $mail->SmtpConnect(); 

您可能需要更改端口號並啓用SSL,具體取決於目標SMTP服務。例如,Gmail,需要的SSL連接。

要啓用SSL,添加$mail->SMTPSecure = 'ssl';


注意:PHPMailer的失敗拋出異常。例如,用戶名/密碼不匹配可能會觸發異常。爲了避免錯誤信息打印在整個頁面上,將函數包裝在try/catch塊中。

$validCredentials = false; 

try { 
    $validCredentials = $mail->SmtpConnect(); 
} 
catch(Exception $error) { /* Error handling ... */ } 
+0

這應該是被接受的答案。它幫了我很多。我一開始也是錯誤的,直到我看到你的答案的後半部分。這對我有用。 –