Strapi v4邮件发送插件在生产服务器上无法正常运行
Strapi v4部署到cPanel后Nodemailer邮件失效的排查方案
针对你本地测试正常但cPanel部署后邮件功能失效的情况,常见问题和排查步骤如下:
环境变量未正确加载
确认cPanel主机上的.env文件是否放置在项目根目录,且SMTP_USERNAME、SMTP_PASSWORD等变量值是否正确配置。部分cPanel主机需要通过面板的「环境变量」功能手动设置,而非直接上传.env文件,需检查变量是否生效(可在Strapi启动日志中查看环境变量读取情况,或通过代码打印env('SMTP_USERNAME')确认)。Gmail账号安全限制
- 若账号开启了两步验证(2FA),必须使用应用专用密码替代原密码作为
SMTP_PASSWORD,普通密码无法用于SMTP登录。 - 检查Gmail账号的「最近活动」,确认是否有异地登录拦截,需在Gmail安全设置中允许该服务器IP的访问,或开启「不太安全的应用访问」(优先推荐使用应用专用密码)。
- 部分地区或服务器IP可能被Gmail的反垃圾系统拦截,可尝试更换SMTP服务商(如SendGrid、Mailgun)测试。
- 若账号开启了两步验证(2FA),必须使用应用专用密码替代原密码作为
cPanel主机的端口/连接限制
- 共享型cPanel主机通常会封禁25端口,部分甚至限制465/587端口,需联系主机商确认是否允许出站连接到
smtp.gmail.com的465端口,或尝试切换到587端口(需将secure设为false,同时添加tls: { rejectUnauthorized: false }配置)。 - 你的配置中
maxConnections设为10000,共享主机的连接数配额远低于此,建议将pool设为false,或把maxConnections调低至10以内,避免触发主机的连接数限制。
- 共享型cPanel主机通常会封禁25端口,部分甚至限制465/587端口,需联系主机商确认是否允许出站连接到
服务器网络连通性
通过cPanel的终端工具执行以下命令测试网络连通性:telnet smtp.gmail.com 465若无法连通,说明服务器防火墙或主机商拦截了该端口,需联系主机商解封,或更换SMTP端口/服务商。
Nodemailer配置细节
- 关闭
logger和debug的生产环境输出,避免日志权限或输出问题干扰正常运行。 - 确认
defaultFrom和defaultReplyTo与SMTP_USERNAME一致,部分邮件服务商要求发件人地址必须与SMTP认证账号匹配。
- 关闭
内容的提问来源于stack exchange,提问作者Kofi Talent
相关产品推荐
相关产品推荐

