PHP邮件头,用于在主题或消息中包含特殊字符的邮件


PHP Mail header for emails with special characters in the subject or message

我的代码:

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

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

提前感谢!

的content - type: text/html

如果你设置了这个头,这意味着你必须向用户发送HTML。您可以决定使用像TinyMCE这样的东西,让用户在word样式的编辑器中编写消息,并使用来自该编辑器的HTML输出。或者将标题设置为明文。

内容类型:文本/平原

编辑:Try this
$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);

我已经使用了这个头,这是为我工作…

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

不要使用mail()函数。使用一个完全精心设计的类来(正确地)为你完成这项工作。

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

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

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

同样,PHP mail()函数工作得很好,但是如果你选择一个更好的解决方案,比如Swift Mailer

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