Изпращам HTML имейл от няколко части, като използвам функцията mail()
на PHP. В моята конфигурация на Postfix SMTP сървърът ми е настроен на SES на Amazon. Ето PHP за изпращане на имейл:
$boundary = uniqid("HTMLDEMO");
$headers = "From: [email protected]\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/alternative; boundary = ".$boundary."\r\n\r\n";
// plain text
$content = "--".$boundary."\r\n" .
"Content-Type: text/plain; charset=ISO-8859-1\r\n" .
"Content-Transfer-Encoding: base64\r\n\r\n" .
chunk_split(base64_encode($plaintext_message));
// HTML
$content .= "--".$boundary."\r\n" .
"Content-Type: text/html; charset=ISO-8859-1\r\n" .
"Content-Transfer-Encoding: text/html \r\n\r\n" .
"<html><body>".$html_message."</body></html>";
//send message
mail($to, $subject, $content, $headers);
Когато повторя съдържанието на съобщението, това е, което виждам в браузъра:
--HTMLDEMO527d8d851e72f
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: base64
VGhpcyBpcyB0aGUgcGxhaW4gdGV4dCB2ZXJzaW9uIQ==
--HTMLDEMO527d8d851e72f
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: text/html
<html><body><p>My message here.</p></body></html>
Но когато преглеждам източника на съобщението в Gmail, сега виждам това (включително заглавките на съобщението):
From: [email protected]
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary = HTMLDEMO527d8d851e72f
Message-ID: <[email protected]>
Date: Sat, 9 Nov 2013 01:19:02 +0000
X-SES-Outgoing: 2013.11.09-12.34.5.67
--HTMLDEMO527d8d851e72f
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: base64
VGhpcyBpcyB0aGUgcGxhaW4gdGV4dCB2ZXJzaW9uIQ==
--HTMLDEMO527d8d851e72f
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: text/html
Многочастните заглавки вече са с двойно разстояние, което кара HTML да се показва като обикновен текст. SES очевидно променя заглавките на съобщенията (добави Message-ID
, Date
и X-SES-Outgoing
), така че може ли това също да е виновникът за допълнителните интервали в многочастните заглавки? Когато изпратя идентичен имейл от сървър, който не е на Amazon, той преминава нормално и изобразява HTML както трябва.
Освен това, когато го изпратя като обикновен HTML имейл (не съставен от няколко части), той работи добре.
Благодаря.