Как использовать специальные символы в имени получателей при использовании функции почты PHP
Как отправить электронное письмо с именем "Name <[email protected]>
" на:
ŠŒŽœžŸ¥µÀÁÃÄÅÆÇÉÊËÍÎÏÐÒÓÕÖØÙÜÝßàáâåæçèéëìíîïðñóôõöøùûýÿ <[email protected]>
Очевидно, что многие из этих символов никогда не будут отображаться в имени, но в случае их использования я бы предпочел, чтобы они не препятствовали успешному отправке письма.
В настоящее время это не выполняется, как указано в Apache error.log с помощью
Игнорирование недопустимого адреса получателя "Кому:" "¥ μÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ" Транзакция отменена: не указано получателей
Если возможно, я хотел бы сохранить специальные символы "как есть".
В противном случае, могу ли я использовать какую-либо функцию транслитерации для очистки имени?
Пример использования:
<?php
$to = "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ <[email protected]>";
$subject = "Test Subject";
$body = "Test Body";
if (mail($to, $subject, $body)) {
echo("<p>Message successfully sent!</p>");
} else {
echo("<p>Message delivery failed...</p>");
}
?>
Ответы
Ответ 1
mb_encode_mimeheader
должен сделать это, как показано в примере:
mb_internal_encoding('UTF-8');
$name = '山本';
$email = '[email protected]';
$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?= <[email protected]>
Subject: =?UTF-8?Q?=E3=81=93=E3=82=93=E3=81=AB=E3=81=A1=E3=81=AF?=
Mime-Version: 1.0
Относится как:
To: 山本 <[email protected]>
Subject: こんにちは
Связанный: fooobar.com/questions/475237/...
Ответ 2
RFC-821 (2821) сообщает нам, что все и любые 8 бит-данные в поле заголовков должны быть закодированы. Base64 или QuotedPrintable, как хотите и можете. Большинство почтовых читателей автоматически декодируют закодированные строки