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

使用PHP的mail()函数发送邮件无法获取已读回执该如何解决?

问题原因与修复方案

一、未收到回执的核心原因

  • 规则层面的天然限制:已读回执本身是弱保障机制,主流邮箱服务商(如Gmail、Outlook)和邮件客户端默认不会自动发送已读回执,必须收件人手动确认同意发送,才会返回对应通知,这个限制无法通过代码强制突破。
  • 代码层面的头字段缺失:你当前的代码只添加了回执相关头,缺少mail()函数要求的必填基础头(比如合法的From头),多数邮件服务商会判定头字段不合规,直接忽略你设置的回执相关字段。

二、修复后的可运行代码

$from = "sender@gmail.com";
// 先补全必填基础头,避免回执头被服务商拦截
$email_header = "From: $from\r\n";
$email_header .= "Reply-To: $from\r\n";
// 回执相关头放在基础头之后
$email_header .= "X-Confirm-Reading-To: $from\r\n";
$email_header .= "Return-Receipt-To: $from\r\n";
$email_header .= "Disposition-Notification-To: $from\r\n";
// 可选添加MIME头提升跨服务商兼容性
$email_header .= "MIME-Version: 1.0\r\n";
$email_header .= "Content-type: text/plain; charset=utf-8\r\n";

$sending_mail = mail("receiver@gmail.com","test subject","test message",$email_header);

三、额外注意事项

  • 如果发往Gmail邮箱,需要发件邮箱提前配置好SPF、DKIM校验,否则会被Gmail判定为垃圾邮件,不会给收件人弹出回执确认提示,自然收不到返回的通知。
  • 即使代码完全符合规范,也无法保证100%拿到回执,最终是否返回完全由收件人和对方服务商决定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:18:03