邮件标题导致失败

时间:2012-02-01 21:17:55

标签: php email email-headers

我正在联系表格。我已经有了一个基本的版本(收集表格信息并从我的网站发送电子邮件到我的个人电子邮件),但我似乎无法获得“附加标题”。如果我有以下标题,它可以正常工作:

$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

但是,如果我尝试添加其他邮件标题,例如:

$headers .= 'To: Jack <Jack Johnson>' . "\r\n";
$headers .= 'From: Birthday Reminder <birthday@example.com>' . "\r\n";
$headers .= 'Cc: birthdayarchive@example.com' . "\r\n";
$headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";
$headers .= "\r\nX-Mailer: PHP/" ;

我在邮件功能上遇到'失败'。我使用的是PHP 5.3.8版。为了确保邮件功能正常工作,我这样做:

$sendmail = mail($email_to, $email_subject, $email_message, $headers);

    if ($sendmail) {
        echo '<div>Thanks for submitting!</div>';
    } else {
        echo '<div>Fail</div>';
    }

我是否错误地格式化了这个?

1 个答案:

答案 0 :(得分:1)

    $headers .= 'To: Jack <Jack Johnson>' . "\r\n";

如评论中所述,这不需要在那里。但它几乎肯定会导致问题,因为它不包含电子邮件地址

同样如评论中所述,您可以在

的开头加上\r\n
    $headers .= "\r\nX-Mailer: PHP/" ;

最后,这不应该导致问题,但你真的不应该这样做:

    $headers .= 'Bcc: birthdaycheck@example.com' . "\r\n";

密件抄送行不属于标题。它们将出现在所有收件人的标题中,从而破坏了密件抄送的重点。您会发现这是在不同的邮件客户端和服务中间歇处理的。有些人会显示它,有些人会保留它,有些人会“善意地”将其隐藏起来。

PHP的mail()并非真正设计用于处理密件抄送,因此您可能需要调用mail()函数并单独发送给密件抄送收件人