Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php';我们的邮件在新的线路上翻倍_Php_Email - Fatal编程技术网

Php';我们的邮件在新的线路上翻倍

Php';我们的邮件在新的线路上翻倍,php,email,Php,Email,出于某种原因,在php中,当发送“多部分/可选”电子邮件时,它似乎会将新行加倍,从而扰乱纯文本客户端的格式 这是我的密码: $boundary=uniqid('np') 什么时候它们之间应该没有线条?您当前使用的是MS Windows样式的线条结尾(\r\n)。改用Unix风格的行尾(\n)很可能您的问题就解决了 不同的系统传统上对不同的行进行编码。但unixoid版本可能被认为是“互联网原生风格”,因为互联网(因此所有网络交换内容)是基于unixoid系统开发的。其实事情比较复杂,这显然是一种

出于某种原因,在php中,当发送“多部分/可选”电子邮件时,它似乎会将新行加倍,从而扰乱纯文本客户端的格式

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


什么时候它们之间应该没有线条?

您当前使用的是MS Windows样式的线条结尾(
\r\n
)。改用Unix风格的行尾(
\n
)很可能您的问题就解决了


不同的系统传统上对不同的行进行编码。但unixoid版本可能被认为是“互联网原生风格”,因为互联网(因此所有网络交换内容)是基于unixoid系统开发的。其实事情比较复杂,这显然是一种简化。因此,像电子邮件程序这样的大多数(至少所有正常的)客户端应该能够正确处理和显示这样的行尾,而微软的Windows风格在他们中的许多人看来是“有趣的”

对于任何类型的Windows客户端,这都不会破坏它吗?如果我没有错,则\r是unix/mac,而\n是Windows。它通常作为一个替身来完成,以确保它在两个世界都有好处-所有客户都应该忽略来自另一个世界的一个。。但是,试着使用$message.=“你的东西”;而不是那些东西。它在某些情况下帮助了我,尽管我不确定这是否能解决你的问题。@ManuelArwedSchmidt抱歉,但事实并非如此!MS Windows使用两个字符(
\r\n
),而unixoid系统使用单个字符(
\n
)。使用的是旧的苹果系统(
\n\r
,无论如何),但自从引入OSX以来,苹果世界变得更加单一(再次)。您可以自己轻松测试:使用普通文本编辑器(而不是文字处理器)创建多行文本文件。然后用hexeditor检查内容。你会看到这一行结束了。@ManuelArwedSchmidt是的,这是事实。实际上,
\r
不过是我们中的老年人从打字机上仍然知道的“回车”。它将光标再次放在当前行的开始处,这样,之后打印的内容将打印在之前打印的内容上。因此,更换。另一方面,
\n
是一个经典的“换行”,意思是往下跳一行。在打字机(和打印系统)上,这不包括“回车”,两者是分开的。这样你就可以说微软的Windows风格“更正确”。@LiamDawe小心点,这是巧合
PHP_EOL
解析为服务器系统固有的换行编码!这里可能是unixoid。但这不是正确的解决方案,因为这与接收消息的系统无关。如果在MS Windows风格的系统上运行相同的代码,则会再次出现问题!相反,您应该硬编码
\n
(因为这是正确的编码),或者您应该将一些全局常量定义为
\n
,并使用它。
                        // 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