使用PHP的邮件功能时如何在收件人姓名中使用特殊字符 [英] How to use special characters in recipients name when using PHP's mail function

查看:29
本文介绍了使用PHP的邮件功能时如何在收件人姓名中使用特殊字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何将格式为Name "的电子邮件发送至:

How can I send an email formatted as "Name <user@example.com>" to:

ŠŒŽœžŸ¥µÀÁÃÄÅÆÇÉÊËÍÎÏÐÒÓÕÖØÙÜÝßàáâåæçèéëìíîïðñóôõöøùûýÿ <user@example.com>

显然,其中许多字符永远不会出现在名称中,但如果出现,我希望它们不会阻止成功发送电子邮件.

Obviously, many of these characters will never show up in a name, but in case they do, I would prefer that they do not prevent an email from being successfully sent.

目前,如 Apache 的 error.log 中所述,此操作失败

Currently, this fails as noted in Apache's error.log with

忽略无效的收件人:"收件人地址'¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüÿ' 交易中止:未指定收件人

Ignoring invalid 'To:' recipient address '¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ ' Transaction aborted: no recipients specified

如果可能,我希望保留特殊字符原样".否则,我可以使用某种音译功能来清理名称吗?

If possible, I would like to keep the special characters 'as they are.' Otherwise, can I use some sort of transliteration function to clean-up the name?

用法示例:

 <?php
 $to = "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ <CHANGED@gmail.com>";
 $subject = "Test Subject";
 $body = "Test Body";
 if (mail($to, $subject, $body)) {
   echo("<p>Message successfully sent!</p>");
  } else {
   echo("<p>Message delivery failed...</p>");
  }
 ?>

推荐答案

mb_encode_mimeheader 应该这样做,就像示例中所示:

mb_encode_mimeheader should do it, just as shown in the example:

mb_internal_encoding('UTF-8');

$name  = '山本';
$email = 'yamamoto@example.com';
$addr  = mb_encode_mimeheader($name, 'UTF-8', 'Q') . " <$email>";

为了更好的兼容性,您应该设置标题 Mime-Version: 1.0 以便所有邮件客户端都知道您正在使用 MIME 编码.

For better compatibility you should set the header Mime-Version: 1.0 so all mail clients understand you're using MIME encoding.

最终的电子邮件标题应如下所示:

The final email headers should look like this:

To: =?UTF-8?Q?=E5=B0=81=E3=83=90=E3=83=BC?= <yamamoto@example.com>
Subject: =?UTF-8?Q?=E3=81=93=E3=82=93=E3=81=AB=E3=81=A1=E3=81=AF?=
Mime-Version: 1.0

呈现为:

To: 山本 <yamamoto@example.com>
Subject: こんにちは

相关:https://stackoverflow.com/a/13569317/476

这篇关于使用PHP的邮件功能时如何在收件人姓名中使用特殊字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆