修复FarBox2.0的SES问题

解决 FarBox 2.0 中使用 AWS SES 的问题

FarBox 2.0 中的邮件通知系统使用了 AWS SES 服务。在仔细研究了 AWS 的逻辑之后,历经一年多,终于完全搞定。不得不说,FarBox 真是一个自学 web 开发的「好」例子...

SES 是一个第三方邮件服务,相当于 AWS 的邮件群发服务。在使用上,通过 API 或 SDK 可以将相同的内容推送给大量客户,算是一个常用且刚需的服务。但是需要有几个注意:

  1. 沙盒时,只有发件人邮箱和登记的邮箱域名才可以收发邮件
  2. AWS 各个区域是独立运营的,也就是说如果要使用多个区域的 SES 服务,需要分别开通和验证信息。
  3. 沙盒模式的 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

  

https://github.com/hepochen/FarBox/blob/daeda4f5080467f1ddf4b60424b8562f914756bd/farbox_bucket/utils/mail/utils.py#L34

  • 刚开始设好 SES 后,只收得到读者留言的邮件提醒,回复给读者对方却收不到邮件

知道原因解决起来就容易了。

  • 开个对应区域的 SES
  • /data/log/farbox/web.log 里找到 SES 相关的错误原因,将 SES 从沙盒模式转为生产模式
Comments
Write a Comment
  • wellsleep reply

    搬迁到bwg测试邮件

    • wellsleep reply

      @wellsleep rep

  • wellsleep reply

    再试一下吧

'