开源项目 MailsViewer - Mail Preview Engine

yedingding · 2012年09月03日 · 最后由 cisolarix 回复于 2013年09月24日 · 3900 次阅读

不知道大家是怎么在本地测试邮件的。没有这么多邮件地址,乱填又怕意外的发到别人的邮箱。同时,开发过程看邮件内容长啥样也很麻烦。

之前在 Intridea 的时候,tomlion 同学开发了 MailsViewer engine, QA 用的很不错。现在 Pragmatic.ly 也在用,必须在其基础上做了不少改进。很高兴得到 tomlion 同学的同意成为维护者。大家可以看这里:https://github.com/pragmaticly/mails_viewer 安装使用都很方便,欢迎试用并提意见。 截图如下:

类似的 gem 有 37signal 的 mail_view 和 Ryan Bates 的 letter_opener, 不过都不适合在 staging 使用,所以也就没在用。

一直用 letter_opener,很好用

#1 楼 @huacnlee staging 上用不了,群发邮件伤不起.... :)

随机生成 [email protected], 模拟发送的时候注释掉发送方法,不真正发送出去。设置个测试组,只给这个组的人真正发邮件,这样就可以看到邮件的样式了

#3 楼 @diudiutang 嗯。如果用这个 gem,就很方便了,不用注释任何代码,大家上网页看就可以了。还有我喜欢用的一个是注册的时候可以填任意地址

之前一直用 mailcatcher,貌似 rails engine 的方式比较好用

#4 楼 @yedingding 看你发什么邮件了,如果是发 edm 类的促销邮件,用 table 写的具体样式,必须要在邮箱里面看,而且还得做各个系统,各个浏览器的样式测试。要是发对样式没要求的邮件就无所谓了

曾经在 staging 上面被 letter_opener 炸过一回.. Rails Engine 很适合做这件事情

或者打开 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

#7 楼 @knwang #9 楼 @knwang 这两个选择不错,学习了,:)

#6 楼 @diudiutang 邮箱格式支持兼容性的确是个问题..... 真实发还不行,还要有多种邮箱的账号及客户端....

#2 楼 @yedingding 非常好用,满足目前需求,简单的测试绝对够了。

#12 楼 @hpyhacking 这个都被你找到了..

#13 楼 @yedingding deploy 的时候就过来刨一刨:)

#7 楼 @knwang mail_safe 好久没人更新了。

@yedingding 刚用了,很好用。虽然遇到了点小问题(一开始当前项目的 tmp 目录下没有自动生成 delivered_mails 目录)。下面是解决办法 ……

config.action_mailer.file_settings = {
  location: '/opt/wwwroot/rails/newsletter/tmp/delivered_mails'
}
需要 登录 后方可回复, 如果你还没有账号请 注册新账号