PHP Mail标头

时间:2013-03-06 14:36:45

标签: php email character-encoding header mime

我的代码:

$to      = 'example@example.com';
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
$header = "From: noreply@example.com\r\n"; 
$header.= "MIME-Version: 1.0\r\n"; 
$header.= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$header.= "X-Priority: 1\r\n"; 

mail($to, $subject, $message, $header);

当我发送包含®ð-˚©-ʼ“æ,˚ˍðß©等特殊字符的邮件时, 在消息中,它工作但不再处理间距(每个新行或空格被删除) 第二个问题是特殊字符不会显示在主题中。 它们的输出方式如下:øʼªʼ

提前致谢!

4 个答案:

答案 0 :(得分:9)

  

内容类型:text / html

如果设置此标题,则表示您必须向用户发送HTML。您可以决定使用像TinyMCE这样的东西让用户在Word样式的编辑器中编写消息并使用它的HTML输出。或者将标题设置为明文。

  

Content-Type:text / plain

编辑:试试这个

$to      = 'example@example.com';
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
$header = "From: noreply@example.com\r\n"; 
$header.= "MIME-Version: 1.0\r\n"; 
$header.= "Content-Type: text/plain; charset=utf-8\r\n"; 
$header.= "X-Priority: 1\r\n"; 

mail($to, $subject, $message, $header);

答案 1 :(得分:2)

我使用过此标题,这对我有用......

$headers = '';
$headers = 'MIME-Version: 1.0'.PHP_EOL;
$headers .= 'Content-type: text/html; charset=iso-8859-1'.PHP_EOL;
$headers .= 'From: webmaster@example.com<From: webmaster@example.com>'.PHP_EOL; 

答案 2 :(得分:1)

不要使用mail()函数。使用一个完全精心设计的课程,为您完成(正确)工作。

http://code.google.com/a/apache-extras.org/p/phpmailer/

答案 3 :(得分:0)

你的代码的问题是因为特殊字符也需要“特殊”字符集。

尝试将charset = ISO更改为charset = UTF8 ...

此外,PHP mail()函数可以正常工作,但是如果你想要更好的解决方案,如Swift Mailer

,你会发现更多的好处和选项。