所以我開發了一個自動郵件系統,通過它我使用 PHPMailer 擴展在 PHP 中發送自動電子郵件。
首先,我使用 PHPMailer 發送的大多數電子郵件都落入了幾個客戶端的垃圾郵件中,這是一個眾所周知的問題。我已經和我的主人核實過,我們創建了一個 SPF 記錄;結果改善了很多。
現在巧合的是,我發現一些客戶端似乎仍然將通過 PHPMailer 腳本接收到的訊息放入他們的垃圾郵件檔案夾中。如果我手動發送相同的電子郵件,它不會發生,所以它似乎與PHPMailer有關;所以我一定做錯了什么。
我目前使用的配置/代碼是 / 是:
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = $host; // verified with my host
$mail->Port = 465;
$mail->Username = '[email protected]'; // verified with my host
$mail->Password = 'mypassword'; // verified with my host
$mail->SMTPSecure = 'ssl';
$mail->SMTPAutoTLS = true;
$mail->setFrom( '[email protected]', 'This is the Header of the E-Mail' );
$mail->addAddress( '[email protected]', '' );
$mail->isHTML( true );
$mail->Subject = 'This is the Subject of the E-Mail';
$mail->CharSet = 'UTF-8';
$mail->Body = 'HTML Content of the E-Mail';
$mail->send();
$mail->SmtpClose();
請注意,我的托管服務提供商不支持任何 DKIM 簽名認證;而且我還通過我的提供商驗證了正確的反向 DNS 查找。
我想念什么人?
有趣的是,我在這里看到了這篇文章;其中寫道:“IANA 已將新服務重新分配給此埠 [465],不應再將其用于 SMTP 通信。”
文章建議使用tls和埠587應該是默認的方法。這可能是問題嗎?還是我在 PHPMailer 上遺漏了什么?我只是想在切換任何東西之前確定一下,因為我根本不是電子郵件領域的專家。好吧,我從來沒有聽說過這個埠問題。
uj5u.com熱心網友回復:
郵件是否最終成為垃圾郵件很難控制。實施 SPF 和 DKIM 會有所幫助,但仍不能保證。如果繞過垃圾郵件過濾器很容易,垃圾郵件發送者就會這樣做,而且他們不會是垃圾郵件過濾器!PHPMailer wiki 中有一篇關于避免垃圾郵件過濾器的文章,您可能會發現它很有幫助。收到的郵件中的標題通常會告訴您為什么將郵件放入垃圾郵件檔案夾,例如列出它匹配的 spamassassin 規則。
你說它是“手動”作業的,但這是從同一個地方發送的(例如在你的本地機器上)?您可以獲取通過每條路由發送的訊息的原始文本并比較它們以查看有什么不同(除了訊息 ID 等明顯的東西)。
MailGun 的那篇文章已經過時了。從那時起,RFC8314不僅“不推薦”埠 465,現在建議將其作為默認埠,因為它消除了 SMTP STARTTLS 在埠 587 上使用的預加密階段可能存在的攻擊向量。不幸的是,它也使得除錯變得更加困難PHP,并且在未明確請求加密時拒絕進行機會加密,因此它不是 PHPMailer 中的默認設定(尚未)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447492.html
