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

使用SendGrid API发送邮件报错 附SMTP配置求排查方案

SendGrid SMTP发信报错排查方案

报错截图:
SendGrid发信报错界面
当前使用的配置参数:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=****
MAIL_ENCRYPTION=tls

具体排查方向和解决方法

  • API密钥配置错误
    你配置里的MAIL_USERNAME填apikey是官方要求的正确写法,90%的同类报错都是MAIL_PASSWORD填错导致的:这里不能填SendGrid账号的登录密码,必须填后台生成的、勾选了Mail Send(邮件发送)权限的完整API Key。这个密钥生成后只会完整展示一次,复制时注意不要漏字符、不要带前后空格;如果密钥没配发信权限,或者开了多余的高风险权限,也会被服务端直接拒绝,重新生成一个仅配发信权限的密钥替换即可。
  • 端口拦截或加密协议不匹配
    587端口+TLS加密是SendGrid官方推荐的SMTP配置,但首先要确认你的服务器/本地网络没有拦截587端口的出站请求:多数云服务商默认封禁25发信端口,部分配置严格的安全组、防火墙也可能误拦587,可在服务器执行telnet smtp.sendgrid.net 587测试连通性,不通的话先在安全组、防火墙放行对应端口。
    如果587端口始终无法连通,可以切换为官方备用配置:
    MAIL_PORT=465
    MAIL_ENCRYPTION=ssl
    
  • 发件人身份未验证
    SendGrid会直接拦截所有未完成身份验证的发信请求,需要在SendGrid后台的发件人认证板块,要么完成单个发件邮箱的验证,要么给发件域名配置SPF、DKIM解析记录完成域名级认证,用未认证的邮箱/域名发信会直接报连接错误。
  • 配置缓存未更新
    如果你用的是Laravel这类带配置缓存的框架,改完.env文件里的参数后必须清除缓存,否则框架还是会读取旧的错误配置,执行以下命令清理即可:
    php artisan config:clear
    php artisan cache:clear
    
  • 账号触发风控限制
    新注册的SendGrid账号如果短时间发信量过大、发信内容命中垃圾邮件规则,会被临时限制SMTP连接,直接登录你注册账号用的邮箱,查看是否有SendGrid发来的风控提醒邮件,按要求提交账号用途说明就能解封。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 04:51:36