这篇博客是上一篇 ActionMailer 那些事(一) 的续。
如你所知,上一篇博客提到邮件发送的 from 别名设置,其实,正常情况下,邮件from地址可以任意填写, 一般邮件服务器是不检查 from 值的(只要包含email格式)。
为什么会有任意填写 from 地址的需求?
因为有时系统会代替客户发送邮件,而期望邮件接受者可以直接通过邮件回复发送的用户,此时,邮件的 from 就该填写用户的 email 了。
本来这并不是问题,因为你只要将 from 值修改成用户的 email 皆可,对于绝大多数邮件服务商这样是可以的,但是 gmail 不行
。
为什么不行?
首先 gmail 处于自己的考虑,必须保证 from 的地址是配置发送邮件账号的 email 地址; 它可以通过简单的正则替换就搞定这个事情,毕竟所有邮件它都有能力修改。
解决办法?
不要使用 gmail 作为应用邮件发送服务器,毕竟它本来就不干这个事情,你应该选择那些邮件专业服务器提供厂商, 例如 SendGrid, Mailgun 等。
友情提示一下: heroku上面邮件服务器,如果配置为 gamil,将无法发送邮件,因为 gmail 已经封了所有来自 heroku 的认证请求。
推荐阅读: ActionMailer 那些事(一)