PHP PEAR send_mail Не удалось установить отправителя с именем и адресом электронной почты - PullRequest
3 голосов
/ 17 февраля 2012

Я пытаюсь отправить письмо с этим скриптом

$to = 'example@example.com';
$headers['To'] = $to;
$headers['From'] = '"My Name" <examlpe@example.com>';
$headers['Return-Path'] = 'examlpe@example.com';
$headers['Subject'] = 'Subject';

$auth = array('host' => MAIL_HOST, 'auth' => true, 'username' => MAIL_USER, 'password' => MAIL_PASS);
$smtp = Mail::factory('smtp', $auth);
$mail = $smtp->send($to, $headers, $message);

if (PEAR::isError($mail))
    echo('<p>PEAR mail: '.$mail->getMessage().'</p>');
else
    echo('<p>PEAR mail: Message successfully sent!</p>');

Но я получил следующее сообщение:

Failed to set sender: "My Name" <example@example.com> [SMTP: Invalid response code received from server (code: 501, response: <"My Name" <example@example.com>>: "@" or "." expected after ""My Name"")]

Когда я делаю поле from следующим образом:

$headers['From'] = 'examlpe@example.com';

Работает нормально, и я получаю письмо.

Как мне отправить электронное письмо с именем отправителя?

Ответы [ 2 ]

5 голосов
/ 20 февраля 2012

Return-Path и Reply-To не совпадают.

Return-Path: если вы хотите переопределить отправителя конверта электронного письма, установите заголовок Return-Path, и это значение будет использоваться вместо значения заголовка From: (с веб-сайта PEAR). Вы не можете установить имя для Return-Path, просто адрес электронной почты.

Reply-To: Получает ответ получателя на этот адрес. Вы можете установить имя и адрес электронной почты.

Замените Return-Path на Reply-To, и он будет работать.

1 голос
/ 17 февраля 2012

Зачем вам нужен адрес электронной почты в поле От. Я предлагаю вам добавить заголовок «Ответить» и указать адрес электронной почты там и в поле «От» просто укажите имя.

...