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

如何从网站自动发送非事务性通知邮件

订阅通知邮件发送解决方案

认知澄清

首先需要明确:SendGrid、Mandrill限制的仅为未经用户主动许可的批量营销垃圾邮件,你要发送的订阅匹配内容通知,属于用户主动触发的合规触发类邮件,完全在两大平台的允许使用范围内,无需担心不符合平台规则。

可选落地方案

方案1:继续使用原有SendGrid/Mandrill服务(最推荐)

无需更换已有服务,直接通过官方SDK发信即可避开PHP原生mail()函数的性能问题:

  • 安装对应平台的官方PHP SDK,以SendGrid为例,执行安装命令:composer require sendgrid/sendgrid
  • 脚本匹配到符合条件的订阅用户后,直接调用SDK接口提交发信请求,平台会自动处理发信队列、送达优化、退信统计等逻辑,可支撑大邮件量场景
  • 单次触发收件人较多时,调用平台的批量发信接口,一次性提交收件人列表和邮件模板,由平台异步发送,避免本地脚本执行超时
  • 最简发信示例:
$sendgrid = new \SendGrid('你的服务API_KEY');
$email = new \SendGrid\Mail\Mail();
$email->setFrom("notify@yourdomain.com", "网站通知");
$email->setSubject("你订阅的内容有新增匹配项");
$email->addTo($userEmail, $userName);
$email->addContent("text/html", $邮件内容变量);
$sendgrid->send($email);

方案2:自建发信架构

如果不想依赖第三方邮件服务,可自行搭建可控的发信体系:

  • 搭建私有SMTP服务,可选用Postfix作为发信服务端,提前配置好域名的SPF、DKIM、DMARC解析记录,保障邮件送达率
  • 新增发信队列层:cron脚本匹配到用户后不要直接发信,先将发信任务写入Redis队列或者MySQL队列表,另外启动常驻消费进程异步发送邮件,避免大流量下脚本阻塞、超时
  • 根据你的服务器IP信誉配置发信速率,避免短时间内发信量过大被收件方邮局判定为垃圾邮件

方案3:替换为其他触发类邮件服务

如果原有服务确实不符合你的使用需求,可替换为其他支持触发类通知的邮件服务,所有正规邮件服务均提供成熟的PHP SDK,无需调用原生mail()函数即可完成发信。

通用注意事项:

  1. 所有发信必须保留用户主动订阅的凭证,避免被投诉为垃圾邮件
  2. 每封通知邮件必须提供清晰的一键退订入口,符合全球邮件合规要求
  3. 定期清理无效、退信的收件人地址,降低退信率,保障发信信誉

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:04