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

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";
user434509
  • 425
  • 8
  • 20

2 Answers2

6

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";         
Luc Laverdure
  • 1,398
  • 2
  • 19
  • 36
3

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']);
Aleksandr Makov
  • 2,820
  • 3
  • 37
  • 62
  • 1
    From the [doc](http://swiftmailer.org/docs/headers.html#adding-new-headers), you don't need to return by ref (`=&`). – IROEGBU Jun 28 '17 at 14:37