Как использовать специальные символы в имени получателя при использовании почтовой функции PHP - PullRequest
12 голосов
/ 06 октября 2011

Как я могу отправить электронное письмо в формате "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>");
  }
 ?>

Ответы [ 2 ]

19 голосов
/ 06 октября 2011

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

Похожие: https://stackoverflow.com/a/13569317/476

1 голос
/ 06 октября 2011

RFC-821 (2821) говорит нам, что все и любые 8-битные данные в поле заголовков должны быть закодированы.Base64 или QuotedPrintable, как вы хотите и можете.Большинство программ чтения электронной почты автоматически декодируют закодированные строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...