1

我希望在生成电子邮件时使用后台进程发送电子邮件Invite

我目前拥有的是这种方法:该Invite模型具有方法send_mail,它使用 Mandrill API 和 gem 发送电子邮件。它还具有使用 Resque 将邀请 IDqueue_mail添加到队列中的方法。InviteMailer

但是……由于我很难为此编写规范,因此我认为这可能不是发送邮件的最佳方法。

我主要想要和需要测试的内容:

  • 邮件是否已添加到队列中?
  • InviteMailer工作正常吗?
  • 邮件是否包含正确的重要信息?

重要信息是:发送给正确的人,包含指向特定站点的链接和一些特定的数据/文本;我也不确定如何让当前主机访问链接。

我不认为这是一件罕见的事情,所以我想知道最佳实践是什么。

我的测试环境:rspec,capybara,factory girl。我已经添加了 VCR,以缓存 API 请求。

4

1 回答 1

2

您可以使用Mailcatcher伪造您的邮件服务器,并通过 Web API 检查收到的邮件:

特征

  • 捕获所有邮件并将其存储以供显示。
  • 显示 HTML、纯文本和源版本的消息(如适用)。
  • 重写 HTML 以显示嵌入的内嵌图像/等,并在新窗口中打开链接。(目前非常基本)
  • 可以发送 HTML 以供 Fractal 分析。
  • 列出附件并允许单独下载部件。
  • 下载原始电子邮件以在您的本地邮件客户端中查看。
  • 用于覆盖默认 SMTP/HTTP IP 和端口设置的命令行选项。
  • 如果您的浏览器支持 WebSockets,邮件会立即出现,否则每 30 秒更新一次。
  • 收到新消息时发出咆哮通知。
  • 作为后台运行的守护进程运行。
  • Sendmail-analogue 命令,catchmail,使得使用 PHP 中的 mailcatcher 变得更加容易。
  • 用 EventMachine 编写超级简单,易于挖掘和更改。

如何

  1. gem install mailcatcher
  2. mailcatcher
  3. http://localhost:1080/
  4. 通过发送邮件smtp://localhost:1025

API

一个相当 RESTful 的 URL 模式意味着您可以从 下载 JSON 格式的消息列表/messages,每条消息的元数据使用 /messages/:id.json,然后相关部分使用 /messages/:id.html/messages/:id.plain用于默认 HTML 和纯文本版本,/messages/:id/:cid用于 CID 的单个附件,或整个消息使用/messages/:id.source.

于 2014-02-28T15:23:05.323 回答