- Published on
修复FarBox2.0的SES问题
- Authors
- Name
- wellsleep (Liu Zheng)
解决 FarBox 2.0 中使用 AWS SES 的问题
FarBox 2.0 中的邮件通知系统使用了 AWS SES 服务。在仔细研究了 AWS 的逻辑之后,历经一年多,终于完全搞定。不得不说,FarBox 真是一个自学 web 开发的「好」例子...
SES 是一个第三方邮件服务,相当于 AWS 的邮件群发服务。在使用上,通过 API 或 SDK 可以将相同的内容推送给大量客户,算是一个常用且刚需的服务。但是需要有几个注意:
-
沙盒时,只有发件人邮箱和登记的邮箱域名才可以收发邮件
-
AWS 各个区域是独立运营的,也就是说如果要使用多个区域的 SES 服务,需要分别开通和验证信息。
-
沙盒模式的 SES 服务会对收件、发件、抄送的人都做邮箱校验,因此如果这三个地址中存在任何未被验证的地址,邮件发送将被拒绝,提示:
MessageRejected: An error occurred (MessageRejected) when calling the SendEmail operation: Email address is not verified. The following identities failed the check in region US-EAST-1
参考:Amazon SES email sending errors - Amazon Simple Email Service
开通其实看看文档,搜搜网页就可以知道 SES 的用法。但是 FarBox 的坑在于以下知识需要读源码:
-
只支持 us-east-1 区的 SES
-
刚开始设好 SES 后,只收得到读者留言的邮件提醒,回复给读者对方却收不到邮件
知道原因解决起来就容易了。
-
开个对应区域的 SES
-
在
/data/log/farbox/web.log
里找到 SES 相关的错误原因,将 SES 从沙盒模式转为生产模式