带有标题的PHP Mail()函数

带有标题的PHP Mail()函数,php,html-email,Php,Html Email,在使用PHP mail()函数时,我总是很费劲。 问题总是一样的,去年,这一次,只要我记得,它让我发疯 问题是邮件头只是显示在电子邮件中 收到的邮件示例: 来源: $onderwerp = "Bedankt voor uw bestelling met order nummer # ".$row['id']; $ontvanger = "customer@customer.be"; $reply = "reply@reply.be"; //$reply = htmlspecialchars($

在使用PHP mail()函数时,我总是很费劲。 问题总是一样的,去年,这一次,只要我记得,它让我发疯

问题是邮件头只是显示在电子邮件中

收到的邮件示例:

来源:

$onderwerp = "Bedankt voor uw bestelling met order nummer # ".$row['id'];
$ontvanger = "customer@customer.be";
$reply = "reply@reply.be";
//$reply = htmlspecialchars($_POST['je_email']); 

$headers = "Content-type: text/html; charset=iso-8859-1\r\n"; 
$headers .= "MIME-Version: 1.0\r\n";    

$headers .= "Reply-To: Webmaster < reply@website.be >\r\n"; // reply-adres
//$headers .= "Cc:  webmaster@website.be , crewlid@website.be \r\n"; //copy
//$headers .= "Bcc:  crew@website.be \r\n"; // blind copy
$headers .= "From: TEST SOME NAME | GW8 <$reply>\r\n"; // de afzender van de mail
$headers .= "X-Mailer: PHP/" . phpversion() . "\r\n";
$headers .= "X-Priority: 1\r\n"; // 3 voor onbelangrijk 
$headers .= "Priority: Urgent\r\n";
$headers .= "Importance: High\r\n"; // Low voor onbelangrijk
$headers .= "X-MSMail-Priority: High\r\n"; // Low voor onbelangrijk  

$bericht = "<strong>TEST</strong>"; 

mail($ontvanger,$onderwerp,$bericht,$headers);
$onderwerp=“Bedankt voor uw bestelling满足订单数量要求”$row['id'];
$ontvanger=”customer@customer.be";
$reply=”reply@reply.be";
//$reply=htmlspecialchars($_POST['je_email']);
$headers=“内容类型:text/html;charset=iso-8859-1\r\n”;
$headers.=“MIME版本:1.0\r\n”;
$headers.=“回复:网站管理员\r\n“//答复地址
//$headers.=“抄送:webmaster@website.be , crewlid@website.be\r\n“//复制
//$headers.=“密件抄送:crew@website.be\r\n“//盲拷贝
$headers.=“发件人:测试某些名称| GW8\r\n”;//阿夫森德·范德梅尔酒店
$headers.=“X-Mailer:PHP/”。phpversion()。“\r\n”;
$headers.=“X优先级:1\r\n”;//3 voor onbelangrijk
$headers.=“优先级:紧急\r\n”;
$headers.=“重要性:高\r\n”//低voor onbelangrijk
$headers.=“X-MSMail-Priority:高\r\n”;//低voor onbelangrijk
$bericht=“测试””;
邮件($ontvanger、$onderwerp、$bericht、$headers);
我使用的是哪一个代码段,总是同一个问题。。 电子邮件内容中显示的标题,如屏幕截图所示


有人知道我怎么解决这个问题吗?我有一种强烈的感觉,这是一个服务器端问题。

如果您没有经验,最好使用已建立的邮件解决方案,而不是PHPs
mail()
功能

一些提示:

可读性和防止错误

出于可读性和编程目的,考虑将头实现为数组。您可以这样工作,而不是在每一行中添加
\r\n
。在
mail()
函数中构建邮件时,您可以
内爆()

// Building headers.
$headers = array();
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859';
$headers[] = 'X-Mailer: PHP/'. phpversion();
// ...

// Sending mail.
mail($ontvanger, $onderwerp, $bericht, implode(PHP_EOL, $headers));
发送HTML邮件

我建议在发送html时以
多部分MIME消息的形式发送邮件。这与你的方法不同。因为在信息中解释起来并不容易。也许你可以试试这个链接:

例如,我使用多部分mime消息通过PHP发送带有自定义附件的HTML邮件


没有必要注意不同标题的顺序。但将它们分组并从最重要的开始是一种很好的做法。

标题在我看来没问题。但我还是推荐一个像SwiftMailer或PHPMailer这样的邮件库。如果我是你,我不会在每封电子邮件中都发送PHP版本,因为存在安全风险。请尝试删除标题中的每一行,直到它起作用为止。那你就知道是哪一个在破坏东西了。Allready换了一个,试了这个。。顺序/顺序似乎有所不同。您的$header行中是否隐藏了任何困难的字符?由于代码页不同,此处无法看到某些内容?文档说明您必须使用
\r\n
,因此在某些操作系统上使用该常量可能会破坏该常量。除了可读性更好之外,将标头加载到数组中还可以更容易地在将其包含在消息中之前对其进行清理。问题可能是标题中的某个地方出现了错误的CRLF。@user3710844我对您问题的回答是编写多部分mime消息。我从未遇到过将HTML邮件作为多部分mime消息编写的问题。但这对你来说可能是第一次很难-但你说你有经验。。。所以;-)。除此之外:许多邮件服务器会丢弃并非来自相应邮件服务器的邮件(尤其是具有高优先级的邮件)。执行反向查找,查看mx记录是否与Web服务器匹配,如果不匹配,则删除它。