测试电子邮件功能的好方法

时间:2008-12-10 20:42:56

标签: email testing

通过电子邮件处理通知应用程序。我想在不向生产服务器和客户发送电子邮件的情况下运行测试。几年前我记得有人用糟糕的电子邮件循环关闭我们的交换服务器,并且不想重复...

有关开发设置的任何建议吗?目前认为一个简单的SMTP服务器将完成这项工作,但我不熟悉那个空间。我需要能够查看发送到服务器的所有电子邮件,但它们永远不会被发送。

感谢。

6 个答案:

答案 0 :(得分:18)

Papercut非常适合您的需求。它在过去几个月已公开发布。我已经使用了一个月。它无法更轻松地测试电子邮件功能。

  1. 下载Papercut。
  2. 运行Papercut,在运行时将它放在托盘中。
  3. 将应用程序的smtp主机配置为运行Papercut的计算机。
  4. 观看Papercut接收电子邮件并查看内容。
  5. 当你完成了。关闭剪纸。

答案 1 :(得分:5)

设置一个传递给文件的别名非常简单,而不是通过任何主要的Unix / Linux邮件服务器(如Postfix或Sendmail)中的任何传递机制。在测试期间,您可以拖尾该文件以查看邮件是否在您希望发送时发送。测试结束后,您可以将其重新定位到真正应该去的地方。

答案 2 :(得分:1)

您可以使用Mailtrap。您可以在登台服务器或开发服务器上设置它。它易于使用,您也可以使用生产电子邮件地址。所有电子邮件都将被困在mailtrap的电子邮件收件箱中。 它更容易设置。

答案 3 :(得分:1)

根据您的电子邮件机制,另一种方法是制作一个testmail。(py,php,sh)脚本,记录所有提供的参数并将它们转储到带有事件时间戳的标记表中。它不优雅,但可以用于调试。欺骗一切取决于你如何发送电子邮件。

沿着同样的路线,如果你使用smtp而不是sendmail,那就写一个ghetto应用程序,它可以监听一些高范围的端口号,只是用正确的值来回应。

答案 4 :(得分:1)

您的问题没有描述环境,但如果您使用的是OO语言(例如Java),则可以使用依赖注入。用两个实现编写MessageSender接口;一个(EmailMessageSender)实际发送电子邮件,而另一个(FileMessageSender)以字符串形式捕获邮件。

单独编写和测试EmailMessageSender;一旦经过验证,就把它放在架子上。

针对MessageSender编写系统的其他部分,并使用{注入的} FileMessageSender实例对其进行测试。 (如果FileMessageSender也允许检索“已发送消息”内容,则可以在单元测试中使用它。)

一旦您验证了系统的其余部分,请使用(再次通过注入)正确配置的EmailMessageSender实例进行部署。

答案 5 :(得分:0)

为什么不简单地将电子邮件列表吐出到文本文件并断开对邮件服务器的任何调用?