首页 > 解决方案 > 在线表单中的电子邮件标题显示不正确

问题描述

我在网上有一份问卷调查表。填写完此表后,我使用 PHP 函数将其通过电子邮件发送给我mail()。表单正文及其包含的数据(包括私人消息)在gmail.com上正确显示。但是,问题出现在电子邮件本身的标题中。某些字符显示不正确。这是一个示例标题:

$headers = "Content-Type:text/html; charset=utf-8\r\n";
$headers .= "From:" .$email . "\r\n";
$headers .= "Reply:" . $email . "\r\n";
$headers .= "X-Mailer: PHP/". phpversion() . "\r\n" ;

要求显示的电子邮件主题:

Nový dotaz -- námět, od Fořt Petr <p.fort1990@gmail.com>

主题同时显示:

Nový dotaz -- námÄ☒t od: FoÅ☒t Petr <p.fort1990@gmail.com>

平方倍符号更像一个矩形。

有什么问题吗?或者我应该在哪里寻找错误?

标签: phphtml-email

解决方案


问题解决了。我的托管服务提供商对标头使用不同的字符编码 - 我无法解释原因,但以下 php 函数将完成所有工作。

function recode_to_utf8 ($text, $encoding = "utf-8")
{
    return "=?$encoding?Q?" . imap_8bit($text) . "?=";
}

现在您所要做的就是使用 mail() 方法和上面定义的方法一起发送一封电子邮件 recode_to_utf8()。像这样:

mail(recode_to_utf8($mail_to), recode_to_utf8($subject), recode_to_utf8($message), recode_to_utf8($headers));

如果他们有和我一样的问题,我希望它可以帮助其他人。


推荐阅读