不知道大家是怎么在本地测试邮件的。没有这么多邮件地址,乱填又怕意外的发到别人的邮箱。同时,开发过程看邮件内容长啥样也很麻烦。
之前在 Intridea 的时候,tomlion 同学开发了 MailsViewer engine, QA 用的很不错。现在 Pragmatic.ly 也在用,必须在其基础上做了不少改进。很高兴得到 tomlion 同学的同意成为维护者。大家可以看这里:https://github.com/pragmaticly/mails_viewer 安装使用都很方便,欢迎试用并提意见。 截图如下:
类似的 gem 有 37signal 的 mail_view 和 Ryan Bates 的 letter_opener, 不过都不适合在 staging 使用,所以也就没在用。
随机生成 [email protected], 模拟发送的时候注释掉发送方法,不真正发送出去。设置个测试组,只给这个组的人真正发邮件,这样就可以看到邮件的样式了
#3 楼 @diudiutang 嗯。如果用这个 gem,就很方便了,不用注释任何代码,大家上网页看就可以了。还有我喜欢用的一个是注册的时候可以填任意地址
#4 楼 @yedingding 看你发什么邮件了,如果是发 edm 类的促销邮件,用 table 写的具体样式,必须要在邮箱里面看,而且还得做各个系统,各个浏览器的样式测试。要是发对样式没要求的邮件就无所谓了
或者打开 Mail::Message,自己做一个过滤器
class Mail::Message
def deliver_with_filtering
unless Rails.env.production?
self.to = scrub_emails(to)
self.cc = scrub_emails(cc)
self.bcc = scrub_emails(bcc)
end
deliver_without_filtering if deliverable?
end
alias_method_chain :deliver, :filtering
private
def deliverable?
to.present? || cc.present? || bcc.present?
end
def scrub_emails(emails)
Array.wrap(emails).select { |email| email[/pragmatic.ly|[email protected]/] }
end
end
@yedingding 刚用了,很好用。虽然遇到了点小问题(一开始当前项目的 tmp 目录下没有自动生成 delivered_mails 目录)。下面是解决办法 ……
config.action_mailer.file_settings = {
location: '/opt/wwwroot/rails/newsletter/tmp/delivered_mails'
}