【问题标题】:How to test e-mail transmission efficiently?如何有效地测试电子邮件传输?
【发布时间】:2018-06-10 13:28:56
【问题描述】:
下周我要测试一个有注册功能的网站。注册后,用户必须收到一封电子邮件,我必须检查
- 如果电子邮件已收到
- 如果电子邮件具有特定内容(用户名、注册链接)。
我将使用 Selenium。我的想法是登录 web.de 或 owa (Outlook) 并检查那里的电子邮件,但还有其他更有效的方法吗?有没有人有经验,可以推荐我一个好的链接或解决方案?
请注意:在 Jenkins 工作期间,测试必须在夜间自动无头运行。所以我不能使用基于 GUI 的工具来检查 SMTP 服务器。
【问题讨论】:
-
要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describe the problem 以及迄今为止为解决它所做的工作。
标签:
selenium
email
automated-tests
headless
【解决方案1】:
我正在使用javax mail library,我认为它非常有用。
代码示例:
import javax.mail.*;
private void javaxMailExample() {
// Set protocol.
String protocol = "imaps";
// Set properties.
Properties props = new Properties();
props.setProperty("mail.store.protocol", protocol);
props.setProperty("mail.imaps.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.imaps.socketFactory.fallback", "false");
props.setProperty("mail.imaps.port", "993");
props.setProperty("mail.imaps.socketFactory.port", "993");
// Set outlook session.
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore(protocol);
// Connect to session.
store.connect("imap-mail.outlook.com", "email@domain.com", "password");
// Read messages.
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
Message message = inbox.getMessages()[inbox.getMessages().length - 1];
See SMTP example.