You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

联系表单集成BCC问题:添加BCC后邮件无法正常发送

问题根源

我一眼就发现问题所在啦——你把邮件头变量直接覆盖了,而不是追加BCC头信息!原本设置的From头被后续的赋值操作清空,导致邮件缺少必要的发件人信息,邮件服务器自然拒绝发送这封不完整的邮件,所以收件人和BCC地址都收不到邮件。

正确实现方式

要在邮件头中添加多个字段,需要用\r\n(回车换行符)来分隔不同的头信息,通过.=运算符追加内容,而不是重新赋值变量。修正后的代码如下:

$recipient = "xjkfak223@gmail.com";
// Set the email subject.
$subject = "New contact from $name";

// Build the email content.
$email_content = "Name: $name\n";
$email_content .= "Email: $email\n\n";
$email_content .= "Phone: $phone\n\n";
$email_content .= "Message: $message\n";
$email_content .= "$subscribe: Yes\n";

// Build the email headers - 追加BCC而不是覆盖原有头信息
$email_headers = "From: $name <$email>\r\n"; // 先设置基础的From头
$email_headers .= "BCC: xy123@gmail.com"; // 用.=追加BCC头

// Send the email.
if (mail($recipient, $subject, $email_content, $email_headers)) {
    // Set a 200 (okay) response code.
    http_response_code(200);
    echo "Thank You for Contacting Us.";
} else {
    // 新增错误提示,方便调试问题
    http_response_code(500);
    echo "Oops! Something went wrong and we couldn't send your message.";
}
额外调试&优化建议
  • 确认你的服务器支持mail()函数,并且邮件配置(比如sendmail或SMTP)正常。部分服务器会限制BCC使用,或要求From地址是服务器内的有效邮箱,否则邮件可能被当成垃圾邮件拦截。
  • 可以追加Reply-To头优化用户体验:$email_headers .= "Reply-To: $email\r\n";,这样收件人回复时会直接发给表单提交者。
  • 如果后续遇到更复杂的邮件需求(比如HTML邮件、附件),推荐使用PHPMailer或SwiftMailer这类专业邮件库,它们处理头信息、编码和异常的能力更可靠,也更容易调试。

内容的提问来源于stack exchange,提问作者Nisarg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:49:33