Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP mail() Multipart/Alternative for HTML & Plain Text Emails

I am using the following code to send out a Multipart/Alternative HTML and Plain Text email. The emails are sending fine content wise, however some of them are getting caught in spam filters. This is the code I am using.

$notice_text = "This is a multi-part message in MIME format.";
$plain_text = "Some Plain Text Here\n\n";
$html_text = '<html><head><title>Sample HTML Email</title></head><body>';
$html_text .= '<p>Some text will go here.</p>';
$html_text .= '<p><img src="http://www.mydomain.com/img/offers.jpg" /></p>';
$html_text .= '<p>Can\'t see the images? <a href="http://www.mydomain.com/print_offer.php?promo=' . $promo_code . '">Click here</a></p>';
$html_text .= '</body></html>';

$semi_rand = md5(time());
$mime_boundary = "==MULTIPART_BOUNDARY_$semi_rand";
$mime_boundary_header = chr(34) . $mime_boundary . chr(34);

$from = "Test Email <[email protected]>";
$subject = "Get Your Offers Here";

$body = "$notice_text

--$mime_boundary
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

$plain_text

--$mime_boundary
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

$html_text

--$mime_boundary--";

mail($email, $subject, $body,
    "From: " . $from . "\n" .
    "bcc: " . $bcc . "\n" .
    "MIME-Version: 1.0\n" .
    "Content-Type: multipart/alternative;\n" .
    "     boundary=" . $mime_boundary_header);

What is causing it to go into spam filters? When I send the email as a plain text they go through just fine, it is only when I send the HTML email that they are getting caught. Any help would be appreciated. Is there more I can add to the headers to help with spam filter prevention?

like image 587
Jeff Thomas Avatar asked Jun 28 '11 18:06

Jeff Thomas


2 Answers

Many spam filters use a cumulative scoring system to decide whether an incoming message is spam. Individual "spammy" problems may slide through, but if several of them are present in a particular email, a threshold reached and the message is dumped.

In your message, I see a few things that may increase your score:

Subject: "Get Your Offers Here"

Solution: Try including specific text about the contents of your email and consider including your company name

and

From: "Test Email: [email protected]";

Solution: Use a real email address. Also, make sure the server you are sending email from is configured properly (see SPF)

and

Content: Unknown

Solution: Make sure your content is specific and relevant. Make sure any links point to the domain from which the email originated. Avoid using too many "spammy" keywords ("offer," "free," "l@@k", etc.).

You can perform a smell test on your own emails. Remove all references to your company and products and enter generic terms. Consider the result to see if you would delete the message if it arrived in your mail box.

like image 195
George Cummins Avatar answered Nov 01 '22 12:11

George Cummins


The direct link to your image file also scores very high on spamdar.

like image 38
Louis Ferreira Avatar answered Nov 01 '22 12:11

Louis Ferreira