Swiftmailer邮件进入垃圾邮件文件夹

时间:2012-02-10 20:48:38

标签: php email sendmail swiftmailer

$headers = "\r\n" . "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

$message = Swift_Message::newInstance()
                ->setSubject($subject)
                ->setFrom(array('from@mail.com' => 'From Address'))
                ->setTo(array('to@mail.com' => 'To Address'))
                ->setBody($message_plain_txt)
                ->addPart($message, 'text/html')
        ;
if ($file_name)
        {
            $message->attach(Swift_Attachment::fromPath($file_path));
        }

$result = $mailer->send($message);

在这种情况下,$ filepath是我在用户从表单附加文件时使用的tmp路径,而$ file_name是tmp文件名$ _FILES [' file'] ['名称'。]

在此设置中,我可以发送邮件,但是当有附件时,邮件会进入垃圾邮件文件夹。如果没有附件,则邮件会进入收件箱。

当我从某个位置上传文件而不是从表单发送附件时,此设置完全正常。

我认为它与电子邮件标题有关,但我无法弄清楚错误。

有人可以帮助我解决我在这里犯的错误。

通过将标题修改为

来实现它
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\n";

2 个答案:

答案 0 :(得分:6)

添加以下标题以避免转到垃圾邮件文件夹:

$headers .= "Message-ID: <".time()." TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
$headers .= "X-Mailer: PHP v".phpversion()."\r\n";         

答案 1 :(得分:3)

在2015年的SwiftMailer版本中,您可以使用内置的getHeaders()方法来设置标题。

$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']);