0

我使用 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;
    }
}

任何想法,为什么它有时会登陆垃圾邮件文件夹?

4

2 回答 2

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 邮件进入垃圾邮件文件夹

于 2016-11-18T22:00:52.390 回答
0

我在电子邮件的传递能力方面遇到了同样的问题。获得所有正确的 DNS 设置、标头等是不够的。

大多数(如果不是全部)云托管和家庭 ISP 的 IP 范围都在各种 IP 列表中,预计不会从这些 IP 列表中发送电子邮件 - 因此它们更有可能被标记为垃圾邮件。

解决此问题的最简单方法是使用众所周知的电子邮件来源的专用服务,并且公司花费大量精力来正确配置电子邮件传递。

有许多知名的此类公司,其中许多提供重要的免费套餐,只要您表现良好并发送未标记为垃圾邮件或退回的适当电子邮件。例如,如果您托管在 Amazon EC2 上,您每月可以通过 AWS/SES 收到超过 60,000 封电子邮件。我自己的系统,我有一个帐户,目前免费,使用 Mailgun,每月发送 10,000 封电子邮件的“限制”。

对于 Swiftmailer,有许多插件可以,例如,使用 HTTP API 将电子邮件发送到服务,然后以通常的方式通过 SMTP 发送 - 大大提高了交付能力。

于 2016-11-18T22:21:25.960 回答