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


PHP e-mail displaying special chars as �

我在这里和谷歌上来回搜索过。但运气不好。

尝试用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);  

像"ß"answers"ä"这样的字符总是作为�.由于电子邮件的内容将从表单中生成,我不知道将使用哪些字符,因此将"ß"替换为&szlig",显然。

我也尝试过iso-8859-1和用htmlenties()编码字符串,但这只会切换结果�toé表示所有特殊字符。

在这种情况下,这是相关的:服务器运行PHP 5.2.7

首先,头端应该用CRLF(''r''n)终止其次。。。您是在邮件头中添加邮件内容,而不是在邮件内容中。。。

检查邮件功能中的参数

此行不应在$Header:中

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

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

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

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!

您应该使用html实体html实体列表

ß的正确用法是:ß