我使用swiftmailer通过PHP发送邮件。大多数时候它工作正常。但有时,我的邮件邮件正在垃圾邮件文件夹中登陆。
这是我发送邮件的代码
function sendMail2($from,$to,$subject,$body,$attachment=NULL) {
require_once 'include_apth/swiftmailer/swift_required.php';
$transport = Swift_MailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance($subject);
$message->setFrom($from);
$message->setTo($to);
$message->setBody($body, 'text/html');
if($attachment) {
$message->attach(Swift_Attachment::fromPath($attachment));
}
if(@$mailer->send($message)) {
return true;
}
else {
return false;
}
}
任何想法,为什么它有时会在垃圾邮件文件夹中登陆?
答案 0 :(得分:0)
添加以下代码,它将完美运行
$headers =& $message->getHeaders();
$headers->addIdHeader('Message-ID', "b3eb7202-d2f1-11e4-b9d6-1681e6b88ec1@domain.com");
$headers->addTextHeader('MIME-Version', '1.0');
$headers->addTextHeader('X-Mailer', 'PHP v' . phpversion());
$headers->addParameterizedHeader('Content-type', 'text/html', ['charset' => 'utf-8']);
解决方案来自以下问题 Swiftmailer mails go into SPAM Folder
答案 1 :(得分:0)
我遇到了与电子邮件传递能力相同的问题。获取所有正确的DNS设置,标题等是不够的。
大多数(如果不是全部)云托管和家庭ISP IP范围都在各种IP列表中,预计不会发送电子邮件 - 因此它们更有可能被标记为垃圾邮件。
解决这个问题的最简单方法是使用专门的服务来熟悉电子邮件,并且公司花了很多精力来正确配置电子邮件传送。
有许多众所周知的此类公司,其中许多都提供重要的免费等级,只要您表现良好并发送未标记为垃圾邮件或反弹的相应电子邮件。例如,如果您托管在Amazon EC2上,您每月可通过AWS / SES收到超过60,000封电子邮件。我自己的系统,我有一个帐户,目前免费,使用Mailgun,每月有10,000封电子邮件发送限制。
对于Swiftmailer,有许多插件可以,例如,使用HTTP API向服务发送电子邮件,然后通过SMTP以通常的方式发送 - 大大提高了可交付性。