差異處
這裏顯示兩個版本的差異處。
java:subethamail:a_simple_way_to_test_mail_sender [2016/08/25 17:45] tony [How to?] |
java:subethamail:a_simple_way_to_test_mail_sender [2023/06/25 09:48] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | {{tag>java}} | ||
- | ====== subethamail - a simple way to test mail sender ====== | ||
- | ===== Problem ===== | ||
- | 為了要驗證程式所寄出的人或訊息是否正確,我們可以寫一些mock程式去攔截收到的內容;也可以透過java mail去接收者的信箱中把內容撈出來比對。這些方法寫起來會比較花時間,如果能透過既有的mail server,可能就會容易多了。 | ||
- | ===== How to? ===== | ||
- | 原先Albert有找到一套叫[[https://nilhcem.github.io/FakeSMTP/|FakeSMTP]]的library,經過試驗發現它並不容易被拿進來寫UnitTest。因此直接使用它所相依的library subethamail,非常簡單就可以讓你去確認寄送者、接收者與信件內容: | ||
- | <code java> | ||
- | private SMTPServer server; | ||
- | private List<String> toList = new ArrayList<>(); | ||
- | private String testContent; | ||
- | |||
- | @Before | ||
- | public void setUp() throws Exception { | ||
- | try { | ||
- | server = new SMTPServer(new SimpleMessageListenerAdapter(new SimpleMessageListener() { | ||
- | |||
- | @Override | ||
- | public void deliver(String from, String to, InputStream content) | ||
- | throws TooMuchDataException, IOException { | ||
- | logger.info("deliver {}", from); | ||
- | logger.info("deliver {}", to); | ||
- | toList.add(to); | ||
- | testContent = IOUtils.toString(content); | ||
- | } | ||
- | |||
- | @Override | ||
- | public boolean accept(String from, String to) { | ||
- | logger.info("accept {}", from); | ||
- | logger.info("accept {}", to); | ||
- | return true; | ||
- | } | ||
- | })); | ||
- | server.setBindAddress(InetAddress.getByName("0.0.0.0")); | ||
- | server.setPort(25); | ||
- | |||
- | server.start(); | ||
- | System.out.println("Start SMTP Server"); | ||
- | } catch (Exception e) { | ||
- | // Ignore | ||
- | } | ||
- | |||
- | } | ||
- | |||
- | @After | ||
- | public void tearDown() throws Exception { | ||
- | if (server !=null) | ||
- | server.stop(); | ||
- | } | ||
- | |||
- | @Test | ||
- | public void test() { | ||
- | // do something | ||
- | |||
- | assertEquals(2, toList.size()); | ||
- | assertTrue(toList.contains("test1@tonylin.org.tw")); | ||
- | assertTrue(toList.contains("test2@tonylin.org.tw")); | ||
- | assertTrue(testContent.contains("test message")); | ||
- | } | ||
- | </code> | ||
- | ===== Reference ===== | ||
- | * [[https://github.com/voodoodyne/subethasmtp|subethasmtp]] | ||
- | ===== ===== | ||
- | ---- | ||
- | \\ | ||
- | ~~DISQUS~~ | ||
- | |||
- | |||