Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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_Cross Platform_Sendmail_Eol - Fatal编程技术网

使用PHP发送跨平台电子邮件,如何处理换行?

使用PHP发送跨平台电子邮件,如何处理换行?,php,email,cross-platform,sendmail,eol,Php,Email,Cross Platform,Sendmail,Eol,当使用PHPmail()函数创建发送电子邮件的脚本时,我遇到了一些新的问题。Unix系统上的PHP希望标题用LF字符分隔,不管怎么说,sendmail然后用正确的CRLF替换它们。但是,在Windows上,消息和标题是按照提供的方式发送的。这是在一篇文章中描述的 因此,为了在Windows上使用LF和CRLF,我需要一种检测系统是否运行Unix版本的sendmail的方法。我知道PHP\u EOL,但我想知道是否有更优雅的方法来处理这个问题 目前,我正在构建我的消息,正如文档所指定的那样 <

当使用PHP
mail()
函数创建发送电子邮件的脚本时,我遇到了一些新的问题。Unix系统上的PHP希望标题用
LF
字符分隔,不管怎么说,sendmail然后用正确的
CRLF
替换它们。但是,在Windows上,消息和标题是按照提供的方式发送的。这是在一篇文章中描述的

因此,为了在Windows上使用
LF
CRLF
,我需要一种检测系统是否运行Unix版本的sendmail的方法。我知道
PHP\u EOL
,但我想知道是否有更优雅的方法来处理这个问题

目前,我正在构建我的消息,正如文档所指定的那样

<?php
$to      = "example@website.com";
$subject = "Email Subject Here";
$message = "Hello this is a plaintext\n message with a line break.";
$headers = array(
  "From: webmaster@example.com",
  "Reply-To: webmaster@example.com",
  "X-Mailer: PHP/" . phpversion()
);

$success = mail($to, $subject, $message, join("\r\n", $headers));
if ($success) {
    echo "Mail Sent\n";
} else {
    echo "Mail Failed\n";
}
当它被传递到sendmail时,所有
LF
被替换为
CRLF
,导致重复的回车。然后,一些邮件服务器将此附加的
CR
替换为
CRLF
,从而产生附加的换行符,在本例中,在
From:
之后的所有标题现在都是邮件正文的一部分

PHP实际上插入了带有不正确行尾的
X-PHP-origing-Script
标题,这是一个次要问题,但仍然很烦人实际上是一个PHP5.3错误,现已修复

有没有关于处理这个跨平台问题的理想方法的想法

谢谢


Aron这在早期的5.3版本中是一个相当短暂的缺陷


升级PHP这在早期的5.3版本中是一个相当短暂的缺陷


升级你的PHP

啊,谢谢,我更新了我的问题来反映这一点。我仍在寻找一种方法来处理Unix和Windows上的
mail()
所需的不同行尾。谢谢,我更新了我的问题以反映这一点。我仍在寻找一种方法来处理Unix和Windows上的
mail()
所需的不同行尾
To: example@website.comLF
Subject: Email Subject HereLF
X-PHP-Originating-Script: 501:mail.phpLF
From: webmaster@example.comCRLF
Reply-To: webmaster@example.comCRLF
X-Mailer: PHP/5.3.1LF
LF
Hello this is a plaintextLF
message with a line break.LF