如何在使用PHP';s邮件功能

如何在使用PHP';s邮件功能,php,email,character-encoding,Php,Email,Character Encoding,如何将格式为“Name”的电子邮件发送至: Š338ƅƅƅƅƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂ38 显然,这些字符中的许多永远不会出现在名称中,但如果它们出现,我希望它们不会阻止电子邮件成功发送 目前,如Apache的error.log中所述,此操作失败 忽略无效的“收件人:”地址 '¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ '事务中止:未指定收件人 如果可能的话,我想让这些特殊角

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

Š338ƅƅƅƅƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂƂ38
显然,这些字符中的许多永远不会出现在名称中,但如果它们出现,我希望它们不会阻止电子邮件成功发送

目前,如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_internal_encoding('UTF-8');

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

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

相关:

RFC-821(2821)告诉我们,必须对头字段中的所有和任何8位数据进行编码。Base64或QuotedPrintable,根据您的需要和能力。大多数电子邮件阅读器会自动解码编码字符串

,可能还会添加一个指向RFC2048的指针,RFC2048定义了这种行为。如果你想处理电子邮件,MIME是必不可少的。谢谢你,deceze,这很好用@谢谢你的RFC参考。我不知道这适用于电子邮件的所有部分。是否也可以对特殊字符和空格进行编码?()不幸的是,
mb_encode_mimeheader
在这种情况下没有帮助。
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: こんにちは