Spring 對 Java Mail 有很好的支持。因此,Spring Boot 也提供了自動配置的支持。
Spring Boot 集成 Java Mail
Spring Boot 中使用 Java Mail 非常簡單方便。修改 pom 文件,添加依賴。
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-mail</artifactId>
- </dependency>
在 src/main/resources/application.properties 中配置郵件信息
- spring.mail.host=smtp.163.com
- spring.mail.username=請輸入用戶名
- spring.mail.password=請輸入密碼
- spring.mail.port=25
- spring.mail.protocol=smtp
- spring.mail.default-encoding=UTF-8
單元測試
我們通過編寫單元測試用例,測試 Java Mail 是否正常工作。值得注意的是,郵件包括幾種類型:簡單文本的郵件、 HTML 文本的郵件、 內嵌圖片的郵件、 包含附件的郵件。
- @RunWith(SpringJUnit4ClassRunner.class)
- @SpringApplicationConfiguration(WebMain.class)
- public class SpringMailTest {
- @Autowired
- private JavaMailSenderImpl mailSender;
- /**
- * 發送包含簡單文本的郵件
- */
- @Test
- public void sendTxtMail() {
- SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
- // 設置收件人,寄件人
- simpleMailMessage.setTo(new String[] {"lianggzone@163.com"});
- simpleMailMessage.setFrom("lianglevel@163.com");
- simpleMailMessage.setSubject("Spring Boot Mail 郵件測試【文本】");
- simpleMailMessage.setText("這里是一段簡單文本。");
- // 發送郵件
- mailSender.send(simpleMailMessage);
- System.out.println("郵件已發送");
- }
- /**
- * 發送包含HTML文本的郵件
- * @throws Exception
- */
- @Test
- public void sendHtmlMail() throws Exception {
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage);
- mimeMessageHelper.setTo("lianggzone@163.com");
- mimeMessageHelper.setFrom("lianglevel@163.com");
- mimeMessageHelper.setSubject("Spring Boot Mail 郵件測試【HTML】");
- StringBuilder sb = new StringBuilder();
- sb.append("<html><head></head>");
- sb.append("<body><h1>spring 郵件測試</h1><p>hello!this is spring mail test。</p></body>");
- sb.append("</html>");
- // 啟用html
- mimeMessageHelper.setText(sb.toString(), true);
- // 發送郵件
- mailSender.send(mimeMessage);
- System.out.println("郵件已發送");
- }
- /**
- * 發送包含內嵌圖片的郵件
- * @throws Exception
- */
- @Test
- public void sendAttachedImageMail() throws Exception {
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- // multipart模式
- MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
- mimeMessageHelper.setTo("lianggzone@163.com");
- mimeMessageHelper.setFrom("lianglevel@163.com");
- mimeMessageHelper.setSubject("Spring Boot Mail 郵件測試【圖片】");
- StringBuilder sb = new StringBuilder();
- sb.append("<html><head></head>");
- sb.append("<body><h1>spring 郵件測試</h1><p>hello!this is spring mail test。</p>");
- // cid為固定寫法,imageId指定一個標識
- sb.append("<img src=\"cid:imageId\"/></body>");
- sb.append("</html>");
- // 啟用html
- mimeMessageHelper.setText(sb.toString(), true);
- // 設置imageId
- FileSystemResource img = new FileSystemResource(new File("D:/images/01.jpg"));
- mimeMessageHelper.addInline("imageId", img);
- // 發送郵件
- mailSender.send(mimeMessage);
- System.out.println("郵件已發送");
- }
- /**
- * 發送包含附件的郵件
- * @throws Exception
- */
- @Test
- public void sendAttendedFileMail() throws Exception {
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- // multipart模式
- MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "utf-8");
- mimeMessageHelper.setTo("lianggzone@163.com");
- mimeMessageHelper.setFrom("lianglevel@163.com");
- mimeMessageHelper.setSubject("Spring Boot Mail 郵件測試【附件】");
- StringBuilder sb = new StringBuilder();
- sb.append("<html><head></head>");
- sb.append("<body><h1>spring 郵件測試</h1><p>hello!this is spring mail test。</p></body>");
- sb.append("</html>");
- // 啟用html
- mimeMessageHelper.setText(sb.toString(), true);
- // 設置附件
- FileSystemResource img = new FileSystemResource(new File("D:/images/01.jpg"));
- mimeMessageHelper.addAttachment("image.jpg", img);
- // 發送郵件
- mailSender.send(mimeMessage);
- System.out.println("郵件已發送");
- }
- }
源代碼
相關示例完整代碼: springboot-action
(完)
