在周末,我们的 MTA (POSTFIX) 突然开始在我们的消息边界前添加换行符。我们有几个 PHP 模板,它们定义了多部分/替代消息并定义了标题。这是 PHP 邮件格式,它在星期五工作,然后在星期一突然停止。
$headers = "From: name <our@example.com>\r\n" .
"Reply-To: name <our@example.com>\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/alternative; boundary=\"09127kjhd821\"";
$txt = "\r\n\r\n--09127kjhd821\r\n" .
"Content-Type: text/plain; charset=UTF-8\r\n" .
"Content-Transfer-Encoding: quoted-printable\r\n\r\n" .
"Text Message";
$html = "\r\n\r\n--09127kjhd821\r\n".
"Content-Type: text/html; charset=UTF-8\r\n" .
"Content-Transfer-Encoding: base64\r\n\r\n" .
chunk_split( base64_encode( "HTML Message") );
$body = $txt . $html . "\r\n\r\n--09127kjhd821--";
mail(
"someone@example.com",
"=?UTF-8?B?" . base64_encode( "Subject" ) . "?=",
$body,
$headers
);
将原始邮件与损坏的邮件进行比较,我看到以下损坏:
Date: Fri, 3 Aug 2012 16:52:39 -0400 (EDT)
--09127kjhd821
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
原始(工作)
Date: Tue, 31 Jul 2012 12:36:45 -0400 (EDT)
--09127kjhd821
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
正如您所看到的,每个 \r 和 \n 的换行符几乎翻了一番,据我所知,没有任何改变会导致这种情况。
非常感谢任何建议或帮助。