PHP mail: использовать кавычки в $ to и in из заголовка письма или НЕ? - PullRequest
1 голос
/ 19 июня 2010

Нужно ли использовать кавычки в $to и from/cc/bcc почтовых заголовках при использовании почтовой функции PHP?

Я имею в виду, скажем, я хочу отправить письмо на:

User One <user@domain.com>

Должен ли я звонить:

mail("\"User One\" <user@domain.com>", ...

OR

mail("User One <user@domain.com>", ...

Полагаю, как только вы дадите мне ответ для $to, он будет таким же для других почтовых заголовков, который я обычно добавляю следующим образом:

$mail_headers  = "From: " . $from . "\r\n";      
$mail_headers .= "Cc: " . $cc . "\r\n";
$mail_headers .= "Bcc: " . $bcc . "\r\n";
$mail_headers .= "MIME-Version: 1.0\r\nContent-type: text/plain;\r\n\tcharset=\"Windows-1252\";\r\nContent-Transfer-Encoding: 8bit" . "\r\n";      
//I use "Windows-1252" charset, cause "iso-8859-1" DOES NOT DISPLAY EURO CHAR!

mail($to, $subject, $body, $mail_headers);

Может быть, мне нужно использовать кавычки, если в заголовке есть одинарная кавычка? Я не знаю, иногда я видел примеры с кавычками, а иногда без них, кто-нибудь знает, и, возможно, объяснил.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 19 июня 2010

Если я читаю соответствующую RFC справа:

Строки символов, которые включают символы, отличные от этих разрешено в атомах может быть представлено в формате строки в кавычках, где символы заключены в кавычки (DQUOTE, ASCII value 34) символы.

Строка в кавычках рассматривается как единое целое. То есть строка в кавычках идентично атому, семантически.

правильный символ для переноса строки - двойная кавычка " (и только это), но это необязательно.

Я бы настоятельно рекомендовал использовать его, если имя получателя содержит пробелы.

2 голосов
/ 19 июня 2010

Получатель должен соответствовать RFC2822 (см. Документ PHP для функции почты ).

Поскольку фактический получатель находится между <и>, не имеет значения, действительно ли выиспользовать кавычки или нет - почта будет отправлена ​​тому же лицу;но его собственный почтовый клиент может отображать его по-другому.

В документации они приводят примеры без кавычек;Я бы тоже так поступил.

0 голосов
/ 19 июня 2010

Это:

mail("\"User One\" <user@domain.com>", ...

выведет:

"User One" <user@domain.com>

пока это:

mail("User One <user@domain.com>", ...

выведет:

User One <user@domain.com>

Обновление:

У меня нет ссылки на RFC, но я заметил, что когда вы пишете письмо с помощью Gmail, оно выглядит так:

"Sarah Chafer" <sarah.chafer@domain.com>, 

Смотрите там двойные кавычки.

...