PHP PEAR send_mail无法设置具有名称和电子邮件的发件人


PHP PEAR send_mail Failed to set sender with name and email

我正试图用这个脚本发送一封电子邮件

$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"")]

当我这样做时:

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

它运行良好,我收到了电子邮件。

如何发送带有发件人姓名的电子邮件?

Return Path和Reply To不相同。

返回路径:如果您想覆盖电子邮件的信封发件人,请设置返回路径标头,该值将被使用,而不是From:标头(From PEAR网站)的值。您不能为返回路径设置名称,只能设置电子邮件地址。

答复:使收件人答复此地址。您可以设置名称和电子邮件地址。

因此,将返回路径替换为回复,它将起作用。

为什么需要发件人中的电子邮件地址。我建议你应该添加"回复"标题并提供电子邮件地址,在"发件人"中只需指定姓名。