Php的邮件在新线上加倍

时间:2014-04-12 14:32:51

标签: php email

出于某些原因,在发送“多部分/替代”电子邮件时,它似乎会加倍新行,弄乱了纯文本客户端的格式。

这是我的代码:                             $ boundary = uniqid('np');

                        // To send HTML mail, the Content-type header must be set
                        $headers  = 'MIME-Version: 1.0' . "\r\n";
                        $headers .= "Content-Type: multipart/alternative;charset=utf-8;boundary=" . $boundary . "\r\n";
                        $headers .= "From: GamingOnLinux.com Notification <noreply@gamingonlinux.com>\r\n" . "Reply-To: noreply@gamingonlinux.com\r\n";

                        $message .= "\r\n\r\n--" . $boundary . "\r\n";
                        $message .= "Content-Type: text/plain;charset=utf-8\r\n";
                        $message .= "Content-Transfer-Encoding: 7bit\r\n";
                        $message .= $plain_message;

                        $message .= "\r\n\r\n--" . $boundary . "\r\n";
                        $message .= "Content-Type: text/html;charset=utf-8\r\n";
                        $message .= "Content-Transfer-Encoding: 7bit\r\n";
                        $message .= "$html_message";

                         $message .= "\r\n\r\n--" . $boundary . "--";

                        // Mail it
                        mail($to, $subject, $message, $headers);

所以它最终会像这样出现:

--np53494d20d247e

Content-Type: text/plain;charset=utf-8

Content-Transfer-Encoding: 7bit

当它们之间不应该有线路时?

1 个答案:

答案 0 :(得分:2)

您当前正在使用MS-Windows样式行结尾(\r\n)。使用Unix样式行结尾(\n)并且很可能您的问题已解决。

不同的系统传统上编码的行结尾不同。但是unixoid版本可能被认为是互联网原生风格的版本,因为互联网(因此所有的网络交换东西)都是基于单独的系统开发的。事实上事情更复杂,这显然是一种简化。因此,大多数(至少所有理智的)客户端,如电子邮件程序应该能够正确处理和显示这样的行结束,而MS-Windows样式看起来很有趣&#34;他们中的很多人。