在Ghost中配置Amazon SES后仍提示设置Mailgun,求助排查问题
问题描述
按照Ghost官方文档配置Amazon SES作为邮件服务,编辑config.production.json并执行ghost restart后,后台仍提示“Set up Mailgun to start sending newsletters!”,相关截图如下:
当前使用的邮件配置:
"mail": { "from": "My Name <example@example.com>", "transport": "SMTP", "options": { "host": "email-smtp.us-east-1.amazonaws.com", "port": 465, "service": "SES", "auth": { "user": "asdfadsffdsf", "pass": "asdfasdfadfs" } } },
SMTP密钥和ID均来自AWS SES控制台,请问问题出在哪里?
排查与解决方案
移除
service: "SES"配置项
Ghost底层用Nodemailer发邮件,同时指定host/port和service时,Nodemailer会优先用service的默认配置,可能覆盖你手动设置的SES服务器信息,导致配置不生效,直接删掉这一行即可。添加
secure: true配置
端口465对应SSL加密传输,得明确指定secure: true,避免Nodemailer自动识别加密方式出错。检查JSON语法正确性
确认config.production.json整体语法没错误,比如逗号、引号是否配对,mail配置块前后是否和其他配置项正确分隔。语法错误会让Ghost忽略整个邮件配置,触发默认的Mailgun提示。验证SES账户状态
确认你的AWS SES账户已移出沙箱(新账户默认在沙箱里,只能发邮件到已验证的邮箱),发件邮箱已在SES中完成验证,且SMTP密钥/ID复制正确,没有多余空格或字符。查看Ghost日志定位问题
执行ghost log命令看实时日志,或者检查Ghost安装目录下的logs文件夹,里面会记录邮件配置的具体错误(比如认证失败、连接超时等),能帮你快速定位问题。
修改后的示例配置
"mail": { "from": "My Name <example@example.com>", "transport": "SMTP", "options": { "host": "email-smtp.us-east-1.amazonaws.com", "port": 465, "secure": true, "auth": { "user": "你的SMTP_ACCESS_KEY_ID", "pass": "你的SES_SMTP_SECRET_ACCESS_KEY" } } }
内容的提问来源于stack exchange,提问作者Ryan

