4

我认为这可能是一种常见情况……我正在为 Rails 应用程序开发密码恢复系统,该系统向用户发送链接以触发新密码表单。很标准的东西。

在我的开发服务器上,我没有启用或配置任何邮件发送软件(sendmail、SMTP 设置等)。由于我没有启用本地邮件服务器,因此config/environments/development.rb我必须抑制出现的任何错误。config.action_mailer.raise_delivery_errors = false这一切都很好。

但是,我想在生产过程中查看电子邮件的内容,而无需实际发送邮件。我知道可以通过测试来做到这一点,断言发送的(或假发送的)邮件具有正确的内容。有没有办法重新路由视图或其他东西,只是暂时在生产中,以查看电子邮件的 HTTP 服务版本,而不是盲目地做出断言?

4

1 回答 1

1

如果您有一个带有“password_reminder”方法的 UserMailer 设置,您可以调用create_password_reminder而不是deliver_password_reminder它会创建消息而不实际发送。然后您可以将输出发送到日志文件:

你会在哪里:

UserMailer.deliver_password_reminder

您可以替换为:

logger.info UserMailer.create_password_reminder.encoded

或者,如果您想将其发送到文件中,您也可以这样做。

话虽如此,生产环境确实不是这种事情的地方。我从来不需要这样做,因为我的邮件具有完整的测试覆盖率。我会考虑那个选项,但我给出了你要求的答案,因为我不知道你的全部情况。快乐编码:)

于 2010-01-30T17:25:46.993 回答