PHPMailer的电子邮件在添加SPF记录后仍会进入一些客户的SPAM



因此,我开发了一个自动邮件系统,通过该系统,我可以使用PHPMailer扩展程序用PHP发送自动电子邮件。

首先,我用PHPMailer发送的大多数电子邮件都落入了几个客户的垃圾邮件中,这是一个众所周知的问题。我已经和我的主人核实过了,我们创造了SPF记录;结果有了很大的改善。

现在巧合的是,我发现一些客户似乎仍然会将通过PHPMailer脚本收到的消息放入他们的垃圾邮件文件夹中。如果我手动发送相同的电子邮件,它不会发生,所以它似乎与PHPMailer有关;所以我一定做错了什么。

我目前使用的配置/代码是:

$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = $host; // verified with my host 
$mail->Port = 465;
$mail->Username = 'mymail@mydomain.com'; // verified with my host 
$mail->Password = 'mypassword'; // verified with my host 
$mail->SMTPSecure = 'ssl';
$mail->SMTPAutoTLS = true;
$mail->setFrom( 'mymail@mydomain.com', 'This is the Header of the E-Mail' );
$mail->addAddress( 'recipientsmail@hisdomain.com', '' );
$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上错过了什么?我只是想在切换任何东西之前先确定一下,因为我根本不是电子邮件领域的专家。。嗯,我从来没有听说过这个港口问题。

邮件是否最终成为垃圾邮件很难控制。实施SPF和DKIM可以有所帮助,但仍然不能保证。如果绕过垃圾邮件过滤器很容易,垃圾邮件发送者就会这么做,他们就不会是垃圾邮件过滤器了!PHPMailer维基上有一篇关于避免垃圾邮件过滤器的文章,你可能会觉得这很有帮助。收到的邮件中的标题通常会告诉你为什么邮件被放在垃圾邮件文件夹中,例如列出它匹配的垃圾邮件暗杀规则。

你说它有效"手动";,但这是从同一个地方发送的吗(例如在您的本地机器上(?您可以获得通过每条路由发送的消息的原始文本,并对它们进行比较,以了解不同之处(除了消息ID等明显的内容(。

MailGun的那篇文章已经过时了。从那时起,RFC8314不仅";未预制的";端口465,现在建议将其作为默认值,因为它消除了SMTP+STARTTLS在端口587上使用的预加密阶段中可能的攻击向量。不幸的是,它也使从PHP调试变得更加困难,并且在没有明确请求加密时,它剥夺了进行机会加密的机会,因此它还不是PHPMailer中的默认值。

最新更新