如何将格式为“ Name <user@example.com>” 的电子邮件发送给:
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_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编码。
Mime-Version: 1.0
最终的电子邮件标题应如下所示:
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: こんにちは