我希望每当生成Invite
时,都会使用后台流程发送电子邮件。
我目前拥有的是这种方法:Invite
模型的方法send_mail
,它使用Mandrill API和gem发送电子邮件。它还使用Resque方法queue_mail
将InviteMailer
方法的邀请ID添加到队列中。
然而......由于我很难为此编写规范,我认为这可能不是发送邮件的最佳方法。
我主要想要并且需要测试:
InviteMailer
是否正常工作?重要信息是:发送给正确的人,包含指向特定网站的链接和一些特定的数据/文本;我也不确定如何让当前主持人加入链接。
我认为这不是一件罕见的事情,所以我想知道最佳做法是什么。
我的测试环境:rspec,capybara,工厂女孩。我已经添加了VCR来缓存API请求。
答案 0 :(得分:2)
您可以使用Mailcatcher伪造您的邮件服务器,并通过网络API检查收到的邮件:
功能强>
- 抓取所有邮件并将其存储以供显示。
- 根据情况显示消息的HTML,纯文本和源版本。
- 重写HTML,可在新窗口中显示嵌入的内嵌图像/等和打开的链接。 (目前非常基础)
- 可以发送HTML以供Fractal分析。
- 列出附件并允许单独下载部件。
- 下载原始电子邮件以在您的本机邮件客户端中查看。
- 用于覆盖默认SMTP / HTTP IP和端口设置的命令行选项。
- 如果您的浏览器支持WebSockets,则会立即显示邮件,否则每30秒更新一次。
- 收到新邮件时收到Growl通知。
- 作为守护程序在后台运行。
- Sendmail-analogue命令,catchmail,使得从PHP使用mailcatcher变得更加容易。
- 简单地在EventMachine中编写,易于挖掘和更改。
如何强>
gem install mailcatcher
mailcatcher
- 转到
http://localhost:1080/
- 通过
发送邮件 醇>smtp://localhost:1025
<强> API 强>
相当RESTful的URL架构意味着您可以下载消息列表 在
/messages
的JSON中,每条消息的元数据都包含在内/messages/:id.json
,然后是相关部分/messages/:id.html
和/messages/:id.plain
用于默认HTML 和纯文本版本,/messages/:id/:cid
个人 CID的附件,或/messages/:id.source
的整个邮件。