[英]How to validate SMTP credentials before sending email in PHP?
由於很難找到答案,我認為這可能是不可能的。 如果是這樣,我想確認這是不可能的。
使用最新版本的PHPMailer有一種非常簡單的方法。
require_once 'phpmailer/class.phpmailer.php';
require_once 'phpmailer/class.smtp.php';
$mail = new PHPMailer(true);
$mail->SMTPAuth = true;
$mail->Username = 'email@example.com';
$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 ... */ }
這不是不可能的。
您可以自己對SMTP交互進行編程,並在SMTP協議中檢查是否接受了憑據。 對於該方法,您必須與SMTP服務器進行套接字級通信(例如,使用[PHP套接字]服務1 )。
要了解SMTP協議的工作原理,請嘗試手動使用Telnet。
http://technet.microsoft.com/en-us/library/aa995718(v=exchg.65).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.