PHP电子邮件显示特殊字符为

时间:2014-11-13 12:20:43

标签: php email

我在这里和谷歌搜索过来。但没有运气。

尝试使用PHP发送电子邮件我有以下内容:

header("Content-Type: text/html; charset=utf-8");
$Empfaenger = "mail@someone.com";  
$Mailbetreff = "Subject";  
$Header = "MIME-Version: 1.0\n";  
$Header .= "Content-type: text/html; charset=utf-8\n";  
$Header .= "From: ";  
$Header .= $Sender;  
$Header .= "\n";  
$Header .= "Straße: Blabla";  
mail($Empfaenger, $Mailbetreff, "", $Header);  

“ß”和“ä”之类的字符总是以 形式出现。 由于电子邮件的内容将从一个表格生成,我不知道,哪些字符将被使用,显然无法用“& szlig”替换一个“ß”。

我也尝试过iso-8859-1并用htmlentities()编码字符串,但是只能将结果从 切换到Ã用于所有特殊字符。

如果是相关的:服务器运行PHP 5.2.7

3 个答案:

答案 0 :(得分:2)

首先,标题端应该由CRLF终止(\ r \ n) 其次......您正在标题中添加邮件内容,而不是邮件内容...

检查mail功能的参数

答案 1 :(得分:1)

您应该使用html实体Html Entities list

正确使用ß将是:ß

答案 2 :(得分:1)

此行不应在$Header

$Header .= "Straße: Blabla";  

您需要为body创建$body变量,并将其添加为邮件的第3个参数。

所以你需要像这样使用你的代码:

header("Content-Type: text/html; charset=utf-8");
$Empfaenger = "a@b.c";
$Mailbetreff = "Subject";
$Header = "MIME-Version: 1.0\r\n";
$Header .= "Content-type: text/html; charset=utf-8\r\n";
$Header .= "From: ";
$Header .= $Sender;
$Header .= "\r\n";

$Body = "Straße: Blabla";
mail($Empfaenger, $Mailbetreff, $Body, $Header);

注意: 你的php文件编码也应该是UTF-8!