Extra blank lines when sending HTML-friendly emails in PHP with Amazon SES
I’m using Amazons SES to send emails, but I wanted to send an HTML-friendly one (with a design, some colors, etc.). I knew that all styles had to be inline, but I running into an error: there were extra lines (carriage returns) when the email was sent out.
I had two variables that defined the HTML header and footer . This was part of the template:
$TEMPLATE_TOP = '<body>
<table width="600" align="center" cellspacing="0" cellpadding="0" border="0">
$TEMPLATE_BOTTOM = '
Of course, for readability, I indent and put the tags on new lines — and this is what was causing the incorrect formatting (extra blank lines).
The solution is to replace chr(10) and chr(13) with a blank. So after you make the template pieces, add this in after :
$TEMPLATE_TOP = str_replace(chr(10), "", $TEMPLATE_TOP);
$TEMPLATE_TOP = str_replace(chr(13), "", $TEMPLATE_TOP);$TEMPLATE_BOTTOM = str_replace(chr(10), "", $TEMPLATE_BOTTOM);
$TEMPLATE_BOTTOM = str_replace(chr(13), "", $TEMPLATE_BOTTOM);
I was sending an email from (multiple) functions. To make it accessible, I put those (2) in separate constants:
So the body of the email (in each function) becomes:
constant('TEMPLATE_TOP') . $email_body . constant('TEMPLATE_BOTTOM');
(of course, where $email_body has your content).
By the way: if you thought this blog post was helpful, check out the book I wrote on PHP, geared toward intermediate web developers.
Originally published at stevesohcot.com on April 3, 2017.