繁体   English   中英

PHP邮件utf-8问题

[英]PHP mail utf-8 issues

我试图使用PHP mail()函数以utf-8编码发送电子邮件。 这有一些问题。 如:

  1. 如果在电子邮件正文中存在unicode字符,那么我会收到一封标有“ Content-Type:application / octet-stream”的电子邮件。 否则,如果没有Unicode字符,我将拥有Content-Type: text/plain; charset=us-ascii Content-Type: text/plain; charset=us-ascii 此行为不依赖于发送标头Content-Type: text/plain; charset=UTF-8 Content-Type: text/plain; charset=UTF-8
  2. 如果主题由根据RFC2047编码的utf-8字符组成,那么我会收到一个类似此Subject: =?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?=的双编码Subject: =?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?= 而不是预期的Subject: =?UTF-8?B?w5HClsORwpfDkcKU?=

例:

$subject = 'іїє';
$body = 'іїє';
$headers = "Content-Type: text/plain; charset=UTF-8\r\n"
    . "MIME-Version: 1.0\r\n";

mail('some-address@gmail.com', mb_encode_mimeheader($subject, 'UTF-8', 'B'), $body, $headers);

这是收到的标头的一部分:

Subject: =?us-ascii?Q?=3D=3FUTF-8=3FB=3Fw5HClsORwpfDkcKU=3F=3D?=
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: application/octet-stream
Content-Transfer-Encoding: 8bit

С–С—С”

由于服务器上的MTA已安装后缀。 作为使用gmail的客户端

电子邮件是一种非常古老,过时且困难的技术。 对于字符编码尤其如此。 我建议使用库,例如PHPMailer 如果您坚持从头开始,那么真正的答案将超出您的问题范围。 浏览器,客户端等使此问题复杂化。 我无法告诉您问题的原因,但是解决方案是PHPMailer。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM