27

我正在编写一个程序,它将通过电子邮件发送许多(约 100 个)客户的报告,我想在向所有人发送垃圾邮件之前对其进行测试。

我想对我的生产数据进行测试运行并将消息实际发送到 SMTP 服务器,但我不希望 SMTP 服务器实际传递消息。从我的应用程序的角度来看,我希望服务器充当真正的 SMTP 服务器,但我不希望传递消息,而是希望它存储消息并记录发生的事情。

是否有专门为测试目的设计的 SMTP 服务器?

有谁知道配置 exim 或 postfix 的方法来表现得像我上面描述的那样

你用什么来测试群发邮件的传递?

4

14 回答 14

15

在java中你可以使用dumbster

它易于使用,您可以验证您拦截的电子邮件的各个方面。

这是一个用于单元测试的 Java SMTP 服务器实现。(只要确保您将电子邮件重定向到运行笨蛋的机器......)


我刚刚找到了另一个几乎相同的替代方案:Greenmail

Greenmail 还支持 POP3、带 SSL 的 IMAP,因此您可以针对它测试您的客户端。

于 2008-10-27T20:29:28.410 回答
9

对于 .NET,我将配置文件设置为将邮件发送到文件夹,然后您可以让自动化测试检查目录和文件。

<system.net>
 <mailSettings>
  <smtp deliveryMethod="SpecifiedPickupDirectory">
   <specifiedPickupDirectory pickupDirectoryLocation="c:\pickupDirectory"/>
  </smtp>
 </mailSettings>
</system.net>
于 2008-10-31T13:27:57.380 回答
5

While searching for options I found the following that may be useful.

于 2008-10-28T22:33:14.150 回答
5

一个很好的电子邮件测试程序是smtp4dev(仅限 Windows)。

这是一个虚拟的 SMTP 服务器。位于系统托盘中,不传递收到的消息。可以快速查看、保存收到的消息并检查源/结构。

http://smtp4dev.codeplex.com/

于 2010-08-28T11:50:31.670 回答
5

“用于单元测试邮件的 Wiser 框架”

我听说其他一些开发人员从 Dumbster 迁移到 Wiser,并且也迁移了我的测试代码。我使用的其中一个 Java 组件每天发送数千封电子邮件,并且我使用 Dumbster 和 Wiser 为不同的电子邮件模板和场景编写了单元测试。我更喜欢威瑟。

来自 Wiser 网站 ( http://code.google.com/p/subethasmtp/wiki/Wiser ) 的片段:

Wiser 是 Dumbster 的智能替代品,构建在 SubEtha SMTP Java 库之上,它允许您的 Java 应用程序使用简单、易于理解的 API 接收 SMTP 邮件。

于 2009-07-06T03:07:19.950 回答
2

http://skaraarslan.blogspot.com/2008/02/how-to-check-email-works-without-using.html

(这假设您正在使用 .net 发送电子邮件)

于 2008-10-27T20:30:47.923 回答
2

鉴于您提到了 exim 和 postfix (我将其视为某种 unix 的东西),这个答案可能没有它应该的那么有用,但请查看Neptune。这是一个为自动化测试而设计的假 SMTP 服务器。如果您有一个备用的 Windows 盒子,您可以将 Neptune 放在上面,然后配置您的应用程序以“通过”Neptune 服务器发送。

于 2008-10-27T20:56:00.353 回答
1

Exim 可以配置为接受传入的邮件但不传递它们。在文档中查找关键字queue_onlyqueue_only_file

于 2009-03-01T01:11:02.930 回答
0

我亲自修改了电子邮件地址以进行测试,我将它们发送到我的一个虚拟帐户,这样我不仅可以验证它们是否发送,而且它们以正确的格式显示。

于 2008-10-27T20:28:41.280 回答
0

在我的办公室,我们有一台服务器,它被设置为始终将所有收到的邮件发送到一个地址,而不管它实际发给谁。我们只需将所有测试环境指向该服务器,然后观察 QA 邮箱填满。我不知道它是什么服务器,但它可能是有人发现的一些开源东西。

于 2008-10-27T20:50:10.427 回答
0

Sendmail 有一个测试模式。

您只需使用-bt参数调用 sendmail。举个例子:

/usr/lib/sendmail -bt -Ciu-testconfiguration.cf

请注意,在此方法中,Sendmail 需要对重写规则进行特殊配置。您需要了解 Sendmail 如何重写地址以便为测试模式正确创建 .cf 文件。


编辑:见这篇文章:http ://ussg.iu.edu/usail/mail/debugging/

于 2008-10-27T20:57:59.117 回答
0

在对找到的解决方案不满意后,我最终编写了developmentSMTP,易于使用,100% Java --> 跨平台。

支持将电子邮件写入文件、转发电子邮件或简单地将它们打印到标准输出上。

于 2012-11-28T14:06:55.837 回答
0

如果您希望手动测试电子邮件是否发送并且电子邮件模板具有您期望的正确类型的 html 和 css,那么我建议您使用 maildev https://www.npmjs.com/package/maildev。您可以将其作为节点模块安装和运行,也可以作为 docker 容器安装和运行!我发现它对于电子邮件的基本健全性测试非常方便。

于 2017-08-05T17:57:47.273 回答
0

Post Hoc is a pure Java application that looks exactly like an SMTP server to the application you are testing, but it simply collects all the email messages and allows you to inspect them using a web interface.

Freely available at: Post Hoc GitHub Site

For more information: PostHoc: Testing Apps that Send Email

于 2017-07-24T22:23:43.807 回答