php - 从 php 发送邮件 - 字符集编码

标签 php email utf-8 character-encoding

我正在从 php 脚本发送一封用希腊语编写的自动邮件。 我试过:

 $headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "From: example@mail.com\r\n";
$headers .= "Reply-To: example@mail.com\r\n";
mail($to, $subject,$body, $headers) ;

主体和主题是希腊语。 Hotmail 正在阅读主题而不是正文,而 gmail 阅读得很好。我用 iso-8859-7(包含希腊字符)替换了 utf-8,它可以工作。 1) 知道为什么它不适用于 utf-8 吗? 2) gmail 也在邮件中写入我的服务器。我怎样才能防止这种情况发生?

最佳答案

所有包含主题的电子邮件 header 都必须是纯 ASCII,您不能直接在电子邮件 header 中使用 UTF-8 或其他编码。一些邮件服务可能能够检测到其他编码并做正确的事情,但它在技术上是无效的。使用 MIME 编码对 header 进行编码,请参阅 How to use special characters in recipients name when using PHP's mail function .

关于php - 从 php 发送邮件 - 字符集编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879784/

相关文章:

java - 热部署 HTML 模板会在汉字位置生成问号 - 仅在 CentOS 上

php - (铂) 字符串函数和 php 中的 UTF8

php - 在 PHP 中调用带参数的 Javascript 函数

PHP header 包含文件在一个文件中有效,在其他文件中无效

php - 使用 jquery 解析 php 脚本返回的 JSON 字符串

android - 等待进程完成以启动另一个进程

laravel - HostGator、Laravel 和电子邮件

PHP 后期过滤和数学

java - 如何连接邮件服务器来使用mime4j?

mysql - 如何更改特定列的 CHARACTER_SET_NAME 和 COLLATION_NAME?