Как отправить электронное письмо с именем « 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: こんにちは
RFC-821 (2821) сообщает нам, что все и любые 8-битные данные в поле заголовков должны быть закодированы. Base64 или QuotedPrintable, как хотите и можете. Большинство почтовых читателей автоматически декодируют закодированные строки