我相信我发送的格式正确的多部分/替代MIME电子邮件包含不同的纯文本和HTML版本的内容。但是,一旦收到电子邮件客户端(我已经尝试了3个不同的邮件),电子邮件的来源似乎已经改变;使用不同的边界文本,纯文本内容已更改为HTML内容(剥离了HTML标记)。电子邮件客户端看不到纯文本替代HTML电子邮件
这是我的PHP脚本:
$boundary = md5(date('r', time()));
$to = '$to_email_address';
$subject = 'Test HTML email';
$headers = "From: $from_email_address\r\n" .
"Content-Type: multipart/alternative; boundary=\"" . $boundary . "\"";
$message = "--" . $boundary . "\r\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\r\n" .
"Content-Transfer-Encoding: 7bit\r\n" .
"\r\n" .
"Hello World!!!\r\n" .
"This is simple text email message.\r\n" .
"\r\n" .
"--" . $boundary . "\r\n" .
"Content-Type: text/html; charset=\"iso-8859-1\"\r\n" .
"Content-Transfer-Encoding: 7bit\r\n" .
"\r\n" .
"
Hello World!
\r\n" ."
This is something with HTML formatting.
\r\n" ."\r\n" .
"--" . $boundary . "--\r\n";
$result = mail($to, $subject, $message, $headers);
echo $result ? "Mail sent" : "Mail failed";
?>
,这是电子邮件的原始源通过电子邮件客户端所看到:
Return-Path:
From:
To:
Subject: Test HTML email
Date: Fri, 22 Feb 2013 10:22:30 -0000
Message-ID:
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----=_NextPart_000_01CC_01CE10E6.8C41D450"
X-Mailer: Microsoft Office Outlook 12.0
Thread-Index: Ac4Q5obGqVqbDjA7SDSMnVZDykxxhA==
X-OlkEid: EE843820EF8935D69CB57C40B3E9F64C8874FA01
This is a multi-part message in MIME format.
------=_NextPart_000_01CC_01CE10E6.8C41D450
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Hello World!
This is something with HTML formatting.
------=_NextPart_000_01CC_01CE10E6.8C41D450
Content-Type: text/html;
boundary="b04d8008be2af4ce2409beb4e26761bd";
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Hello World!
This is something with HTML formatting.
------=_NextPart_000_01CC_01CE10E6.8C41D450--
我如何能确保接收客户端收到预期的纯文本内容?
预先感谢您的帮助, 斯图尔特
2013-02-22
Stuart
+0
第二个正文部分中的Content-Type标题不需要边界参数。 –
2013-03-29 18:42:30