PHPMailer: 550 Bad HELO - Host impersonating domain name
懶人包
在原本的
$mail->Host = $smtpHost;
下面再加入一行
$mail->Hostname = $smtpHost;
事源及解決方法
其中一個項目無法使用phpmailer 經SMTP寄到信 打開Debug模式再試
$mail->SMTPDebug = 1; //測試後記得一定要改回0
發現報錯
550 Bad HELO - Host impersonating domain name
原因是網站所在的server
和 mail 所在的server
不一是同一台server,mail server 就拒絕代為寄出,認為是冒充域名
錯誤的原因大約是這樣,其實把ip加入mail server白名單之類的非常麻煩,但如果你的網站ip更換了,忘記去mail server 改白名單,又會寄不到信
所以最好的方法是直接在代碼中解決
原本的代碼:
$smtpHost = "mail.abc123.com";
$smtpUsername = "sky@abc123";
$smtpPassword = "paddword";
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPDebug = 0;
$mail->Host = $smtpHost;
只需要在最下面再加入一行
$mail->Hostname = $smtpHost;
注:Host 和 Hostname 在PHPMailer 有不同的定義
邏輯上有點複雜,簡而言之,這樣就解決了mail server 認為是 冒充域名
的問題