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

5
$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 是我在用户从表单上传文件时使用的临时路径,而 $file_name 是 $_FILES['file']['name'] 的临时文件名。
在这种设置中,我能够发送邮件,但当有附件时,邮件会被归类到垃圾邮件文件夹中。如果没有附件,邮件就会进入收件箱。
当我从位置上传文件而不是从表单发送附件时,这个设置完全正常工作。
我认为这与电子邮件头有关,但我无法找出错误所在。
请问有人可以帮我看一看,找出我的错误吗?
通过修改头文件,我解决了这个问题。
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
2个回答

6

添加以下标题以避免进入垃圾邮件文件夹:

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

1
感谢您的帮助... 即使添加了以上代码,邮件仍然被归为垃圾邮件。 - user434509
我不确定问题出在哪里,这对我有效,可能取决于服务器垃圾邮件过滤器...很难说是什么问题。 - Luc Laverdure
11
@user434509 你做了哪些额外的修改? - Matthew Johnson

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

1
根据doc,你不需要返回=& - IROEGBU

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接