我有一个每天发送电子邮件的应用程序。我正在使用 SwiftMailer PHP 库和 SMTP 帐户。
我向以下提供商发送了测试电子邮件,以查看电子邮件是发送到收件箱还是垃圾邮件:
- GMail (OK - Inbox)
- Yahoo (OK - Inbox)
- AOL (OK - Inbox)
- Outlook (FAIL - Junk)
现在我使用的代码:
// init smtp transport
if ($smtp_ssl !== false)
{
$transport = Swift_SmtpTransport::newInstance($smtp_host, $smtp_port, strtolower($smtp_ssl));
}
else
{
$transport = Swift_SmtpTransport::newInstance($smtp_host, $smtp_port);
}
// using login/password
if($smtp_user !== false && $smtp_pass !== false){
$transport->setUsername($smtp_user);
$transport->setPassword($smtp_pass);
}
$mailer = Swift_Mailer::newInstance($transport);
$status = $mailer->send($message);
我不明白为什么Outlook将其视为垃圾邮件。
现在我注意到的是,如果我的SMTP帐户来自我的服务器,例如:test@myserverdomain.com 进入垃圾邮件,但是如果我将SMTP帐户更改为类似 test@gmail.com,那么它会进入收件箱。
我的服务器域是否有问题,hotmail将其视为垃圾邮件?
此外,如果我的SMTP帐户 test@gmail.com 现在AOL将从此SMTP帐户发送的电子邮件视为垃圾邮件。
您不能简单地使用随机邮件地址并希望它有效。垃圾邮件对策可以检查是否确实允许发送服务器从该地址发送邮件。谷歌关于"域密钥"或"SPF",以查看两种现有的方法来验证邮件的发送。我假设您的服务器不允许从"@gmail.com"域发送邮件,因此任何人都在做正确的事情,将这些邮件标记为垃圾邮件。
此外,垃圾邮件检测正在分析邮件内容。这也可以单独配置,因为每个人的垃圾邮件都是不同的。您说"outlook.com"将您的邮件识别为垃圾邮件可能是因为您之前将邮件标记为垃圾邮件,看起来与您现在发送的邮件一样。其他帐户可能会将此邮件视为有效。
如果接收邮件服务没有通知收件人为什么此邮件被标记为垃圾邮件,那么您根本无能为力。但这不是SwiftMailers的错,也不是与您的设置有关。