带有标头的PHP Mail()函数

时间:2014-07-14 14:19:01

标签: php html-email

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

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

收到的邮件示例:

http://nl.tinypic.com/view.php?pic=63va5z&s=8#.U8PmeED8rbw

来源:

$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);

我使用哪个代码段,总是同样的问题.. 标题显示在电子邮件内容中,如屏幕截图所示。

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

1 个答案:

答案 0 :(得分:0)

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

一些提示:

可读性和防止错误

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

// 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时将邮件发送为multipart MIME messages。这与你的approch不同。因为在消息中解释并不容易。也许可以尝试使用该链接:http://webcheatsheet.com/php/send_email_text_html_attachment.php

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

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

相关问题