簡體   English   中英

如何在PHP中發送電子郵件之前驗證SMTP憑據?

[英]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

PHP 郵件功能不支持SMTP身份驗證。

你可以考慮第三方圖書館,例如

http://swiftmailer.org/

http://pear.php.net/package/Mail

或者你可以在這里試試這個劇本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM