Добавят се допълнителни интервали към PHP заглавките на пощата

Изпращам 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 имейл (не съставен от няколко части), той работи добре.

Благодаря.


person Mike    schedule 09.11.2013    source източник
comment
Това са заглавки от няколко части, а не заглавки в оригиналното съобщение. Предлагам да ни покажете своя PHP код. Също така, какво се случва, когато опитате с различен SMTP сървър?   -  person Dai    schedule 09.11.2013


Отговори (1)


Имах същия проблем и го разреших, като промених знака за край на реда на '\n' вместо на '\r\n'.

person toaster    schedule 28.01.2014