当前位置: 首页 > 面试题库 >

使用PHP的邮件功能时如何在收件人名称中使用特殊字符

姜志行
2023-03-14
问题内容

如何将格式为“ Name <user@example.com>” 的电子邮件发送给:

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

显然,这些字符中的许多字符永远都不会出现在名称中,但万一出现,我希望它们不会阻止电子邮件的成功发送。

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

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

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

用法示例:

 <?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_internal_encoding('UTF-8');

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

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

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

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: こんにちは


 类似资料:
  • 问题内容: 我有以下脚本: 在电子邮件中: 学科: 身体: 我尝试了很多事情,但是我再也没有想法了。你能帮助我吗?你有没有做过这个工作? 谢谢! 问题答案: 您是否尝试过iconv_set_encoding? 这应该工作:

  • 在轻推邮件功能中成功配置邮箱后,可利用轻推进行邮件接收和发送。 操作办法:我-邮件-配置邮件 查看邮件-发送邮件

  • 我有一个联系人表格,有人提供他的姓名和电子邮件。我现在想给他发一封拉威尔的电子邮件。 我在文件里找到的 要发送消息,请使用Mail facade上的To方法。to方法接受电子邮件地址、用户实例或用户集合。 事实上 \邮件::('example@gmail.com')- 作品。但是也可以提供电子邮件收据的名称吗? 我想在邮件Facade的LaravelAPI中查找它,但令我惊讶的是,Facade没有

  • 问题内容: 我什至不确定这是否可行,但是我想做的如下。我有一个使用脚本生成并通过电子邮件发送的HTML表单。我想要的是将电子邮件从此表单接收到,然后我希望该地址显示为表单中的字段之一。 我环顾四周,并在此站点上找到了一些有用的信息。我不确定是否可以在这种情况下使用,或者是否可以满足我的要求。 如果可能的话,这可能吗? 问题答案: 在同一站点(示例2)上查看此页面:http : //www.w3sc

  • 问题内容: 我的应用程序正在使用这样的NSURL: 当我试图做一个从这个NSURL获取数据的任务时,如下所示: 但是尝试从该地址获取数据时出现错误,尽管当我使用野生动物园去链接时:“ http://www.geonames.org/search.html?q =Aïn+Béïda+ Algeria&country =“我可以看到数据。我该如何解决? 问题答案: 迅捷2 编码的URL现在是: “ h

  • 问题内容: 我不能使用UTF-8字符创建文件夹: 当我在Windows资源管理器中浏览此文件夹时,文件夹名称如下所示: 我该怎么办? 我正在使用php5 问题答案: 只是所需的字符串作为文件名。 从中返回的 所有 字符在文件名(NTFS / HFS / UNIX)中均有效,然后您可以将文件名改回UTF-8(或它们使用的任何编码)。 注意事项(同样适用于以下解决方案): 进行网址编码后,文件名必须少