使用Java Mail Server进行测试

时间:2010-05-06 16:05:03

标签: java testing email mail-server

我正在测试将邮件从邮箱中取出的应用程序,根据该邮件的内容执行某些操作,然后根据操作的结果发送响应邮件。

我正在寻找一种为此应用程序编写测试的方法。理想情况下,我希望这些测试能够启动自己的邮件服务器,将我的测试电子邮件推送到此邮件服务器上的文件夹,并让我的应用程序将邮件从我的测试开始的邮件服务器中删除。

配置应用程序以使用邮件服务器并不困难,但我不知道在哪里寻找以Java编写邮件服务器的编程方式。我看过JAMES,但我无法弄清楚如何从我的测试中启动服务器。

所以问题是:我可以在Java中使用什么来配置和完全在Java中启动?

5 个答案:

答案 0 :(得分:11)

还有一个非常简单的使用GreenMail,它被设计为自动“单元”测试的邮件服务器。

来自项目网页(现在可能还有其他一些具有发送/接收功能的工具):

  

GreenMail是一个开源的,直观的   和易于使用的电子邮件测试套件   服务器用于测试目的。支持   带SSL插槽的SMTP,POP3,IMAP   支持。 GreenMail还提供了一个   JBoss GreenMail服务。 GreenMail是   提供的拳头和唯一的图书馆   接收的测试框架   并从Java检索电子邮件。

答案 1 :(得分:4)

我之前在单元测试中使用了DumbsterSubEthaSmtp来测试发送电子邮件的代码。

我发现Dumbster更容易使用。

答案 2 :(得分:0)

看看JES,似乎做你想做的事。

答案 3 :(得分:0)

Dumbster:快速安装!但无法处理邮件附件。身体末端只有字符串,必须单独解析。

所以现在我正在尝试另一个框架

答案 4 :(得分:0)

Mock-JavaMail项目

我在为Jenkins开发插件时遇到过它,这是一个梦想使用!

只需drop the dependency进入您的项目,您就可以开始了(我会让Kohsuke explain如何设置和使用它。)

如果您不耐烦,请参阅以下简要说明:

实施例

// Setup test: add mail to inbox
Mailbox tmp = Mailbox.get("foo@bar.com");
tmp.add(/* your javax.mail.Message */)
assertEquals 1, tmp.size()

// Connect to the inmemory mailbox using "imap"
Session session = Session.getInstance(System.getProperties(), null);
Store store = session.getStore('imap');
store.connect("bar.com","foo","anything");

// Check the mail exists!
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
assertEquals 1, inbox.getMessageCount()
store.close();