PHP邮件主题与德国信件

时间:2016-11-27 10:54:17

标签: php email

我在这里可能是一个简单的问题,但我不明白为什么它不起作用,我有研究并尝试了很多例子,我发布你的我当前的例子,我从他们解释这个的教程中得到了这个是解决方案,但在我的情况下,它不起作用,我收到的电子邮件中的主题没有正确显示字母“ÄÖÜÜß”。

$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/html; charset=utf-8";
$headers[] = "From: {$emailfrom}";

$to = "myemail@yahoo.de";
$subject = 'Betreff mit Ä, Ö und Ü ß ü';
$subject = '=?UTF-8?B?'.base64_encode($subject).'?=';


$txt = "Hallo Sie haben das gewählt, am ä ";
mail($to,$subject,$txt,implode("\r\n",$headers));

通常他们在不同的教程中随处写,这是解决方案,但在我的情况下它不起作用,为什么?在我的情况下,也许与月亮有关?哈哈;)

4 个答案:

答案 0 :(得分:5)

您应该使用mb_encode_mimeheader

mb_internal_encoding("UTF-8"); 
$subject = mb_encode_mimeheader($subject,'UTF-8','Q');

在需要时(人类可读),它将处理Quoted-printable的编码。希望它能解决你的问题。

答案 1 :(得分:1)

无需对您的主题进行base64编码......以下工作正常:

<?php

$emailfrom = 'Some Name <somename@someserver.com>';

$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/html; charset=utf-8";
$headers[] = "From: $emailfrom";

$to = "myemail@yahoo.de";
$subject = 'Betreff mit Ä, Ö und Ü ß ü';
$txt = "Hallo Sie haben das gewählt, am &#xE4; ";

mail($to, $subject, $txt, implode("\r\n", $headers));

修改 Gmail在执行上述带有Gmail地址的代码段时显示的部分标题:

Subject: Betreff mit Ä, Ö und Ü ß ü
X-PHP-Originating-Script: 1000:test.php
MIME-Version: 1.0
Content-type: text/html; charset=utf-8

Hallo Sie haben das gewählt, am &#xE4; 

答案 2 :(得分:1)

因此,您需要选择一种编码,使用该编码保存HTML文件,并确保至少以其中一种方式声明该编码。至于使用什么编码,德国人通常使用ISO / IEC 8859-15,但UTF-8是一个很好的选择,可以同时处理任何类型的非ASCII字符。

第一种方法是使用utf 8

    $headers.="MIME-Version: 1.0\r\nContent-type: text/plain; charset=UTF-8\r\n";

第二种方式是根据德语使用charset

    $headers.= "MIME-Version: 1.0\r\nContent-Type: text/html; charset=ISO/IEC 8859-15\r\n";

答案 3 :(得分:-1)

Try this
$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/html; charset=utf-8";
$headers[] = "From: {$emailfrom}";

$to = "myemail@yahoo.de";
$subject = 'Betreff mit Ä, Ö und Ü ß ü';
$subject = str_replace("");
$subjects = '=?UTF-8?B?'.$subject.'?=';


$txt = "Hallo Sie haben das gewählt, am &#xE4; ";
mail($to,$subjects,$txt,implode("\r\n",$headers));

如果你有相同的错误输出方法请参考php中的iconv()它为你的问题提供解决方案..所有最好的伙伴..