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