问题
$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);
In this case $filepath is the tmp path which I am using when a user attaches a files from a form and $file_name is the tmp file name $_FILES['file']['name'].
In this setup I am able to send mails but when there is an attachment, the mail goes into SPAM folder. If there is no attachment then mail goes into inbox.
This setup works perfectly fine when I am uploading a file from a location and not sending the attachment from a form.
I think it has got something to do with the email headers, but i am not able to figure out the error.
Can some one please help me with what mistake I am doing here.
Got it working by modifying headers to
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\n";
回答1:
Add the following headers to avoid going to spam folder:
$headers .= "Message-ID: <".time()." TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
$headers .= "X-Mailer: PHP v".phpversion()."\r\n";
回答2:
In versions of SwiftMailer in 2015, you would use built-in getHeaders()
method to set headers.
$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']);
来源:https://stackoverflow.com/questions/9234622/swiftmailer-mails-go-into-spam-folder