整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          springboot(二十四)使用springboo

          springboot(二十四)使用springboot發送郵件

          面記錄使用springboot發送四種郵件的方法:普通文本、html、附件、模板html

          1、引入springboot依賴包

          gradle:

           compile group: 'org.springframework.boot', name: 'spring-boot-starter-mail'
           compile group: 'org.springframework.boot', name: 'spring-boot-starter-thymeleaf'
          

          maven:

          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-mail</artifactId>
              <version>3.0.3</version>
          </dependency>
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-thymeleaf</artifactId>
              <version>3.0.3</version>
          </dependency>
          

          spring-boot-starter-mail實現郵件發送
          spring-boot-starter-thymeleaf實現模板的創建

          2、 在resources/templates中創建一個模板html:emailTemplate.html

          <!DOCTYPE html>
          <html lang="en" xmlns:th="http://www.thymeleaf.org">
          <head>
              <meta charset="UTF-8">
              <title>這是一個測試的模板</title>
          </head>
          <body>
          您的賬號存在異常,請點擊下面鏈接進行安全驗證<br/>
          <a href="#" th:href="@{http://www.lalalala.com/{userid}(userid=${userid})}">安全驗證</a>
          </body>
          </html>
          

          3、 四種郵件發送測試代碼

          package com.iscas.biz.test.controller;
          
          import com.iscas.templet.common.BaseController;
          import com.iscas.templet.common.ResponseEntity;
          import lombok.extern.slf4j.Slf4j;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.core.io.FileSystemResource;
          import org.springframework.mail.SimpleMailMessage;
          import org.springframework.mail.javamail.JavaMailSender;
          import org.springframework.mail.javamail.MimeMessageHelper;
          import org.springframework.web.bind.annotation.GetMapping;
          import org.springframework.web.bind.annotation.RequestMapping;
          import org.springframework.web.bind.annotation.RestController;
          import org.thymeleaf.TemplateEngine;
          import org.thymeleaf.context.Context;
          
          import javax.mail.MessagingException;
          import javax.mail.internet.MimeMessage;
          
          /**
           * 郵件發送測試
           *
           * @author zhuquanwen
           * @vesion 1.0
           * @date 2020/8/12 21:16
           * @since jdk1.8
           */
          @RestController
          @RequestMapping("/send/email/test")
          @Slf4j
          public class SendEmailController extends BaseController {
              @Autowired
              private JavaMailSender javaMailSender;
              @Autowired
              private TemplateEngine templateEngine;
          
              /**
               * 測試發送普通文本郵件
               * */
              @GetMapping("/text")
              public ResponseEntity testText() {
          
                  SimpleMailMessage message=new SimpleMailMessage();
                  // 發件人地址
                  message.setFrom("461402005@qq.com");
                  // 收件人地址
                  message.setTo("76775081@qq.com");
                  // 郵件標題
                  message.setSubject("這是一個測試");
                  // 郵件正文
                  message.setText("這是測試正文");
          
                  javaMailSender.send(message);
                  log.debug("發送成功!");
          
                  return getResponse();
              }
          
              /**
               * 測試發送HTML郵件
               * */
              @GetMapping("/html")
              public ResponseEntity testHtml() throws MessagingException {
          
                  MimeMessage message=javaMailSender.createMimeMessage();
                  // 這里與發送文本郵件有所不同
                  MimeMessageHelper helper=new MimeMessageHelper(message, true);
                  // 發件人地址
                  helper.setFrom("461402005@qq.com");
                  // 收件人地址
                  helper.setTo("76775081@qq.com");
                  helper.setSubject("這是html測試");
                  // 發送HTML郵件
                  String html="<html><body><h1>這是測試測試</h1></body></html>";
                  helper.setText(html, true);
          
                  javaMailSender.send(message);
                  log.debug("發送成功");
          
                  return getResponse();
              }
          
              /**
               * 測試發送附件
               * */
              @GetMapping("/attachment")
              public ResponseEntity testAttachment() throws MessagingException {
          
                  MimeMessage message=javaMailSender.createMimeMessage();
                  // 這里與發送文本郵件有所不同
                  MimeMessageHelper helper=new MimeMessageHelper(message, true);
                  // 發件人地址
                  helper.setFrom("461402005@qq.com");
                  // 收件人地址
                  helper.setTo("76775081@qq.com");
                  helper.setSubject("這是附件測試");
                  // 發送HTML
                  String html="<html><body><h1>這是測試測試</h1></body></html>";
                  helper.setText(html, true);
          
                  //發送附件
                  FileSystemResource file=new FileSystemResource("E:\\test\\repo1\\a.txt");
                  // 發送文件名
                  String fileName=file.getFilename();
                  helper.addAttachment(fileName, file);
          
                  javaMailSender.send(message);
                  log.debug("發送成功");
          
                  return getResponse();
              }
          
              /**
               * 測試發送thymeleaf模板郵件
               * */
              @GetMapping("/template")
              public ResponseEntity testTemplate() throws MessagingException {
          
                  MimeMessage message=javaMailSender.createMimeMessage();
                  // 這里與發送文本郵件有所不同
                  MimeMessageHelper helper=new MimeMessageHelper(message, true);
                  // 發件人地址
                  helper.setFrom("461402005@qq.com");
                  // 收件人地址
                  helper.setTo("76775081@qq.com");
                  helper.setSubject("這是模板測試");
          
                  //獲取模板生成html
                  Context context=new Context();
                  // 這里的id與resources/templates下的模板文件中的${userid}必須對應
                  context.setVariable("userid", 1);
                  // 這里的"emailTemplate"與resources/templates下的模板文件一直
                  String html=templateEngine.process("emailTemplate", context);
                  helper.setText(html, true);
          
                  //發送附件
                  FileSystemResource file=new FileSystemResource("E:\\test\\repo1\\a.txt");
                  // 發送文件名
                  String fileName=file.getFilename();
                  helper.addAttachment(fileName, file);
          
                  javaMailSender.send(message);
                  log.debug("發送成功");
          
                  return getResponse();
              }
          }

          4、 將郵件發送封裝為工具類

          package com.iscas.base.biz.service.common;
          
          import cn.hutool.core.io.IoUtil;
          import com.iscas.templet.common.ResponseEntity;
          import lombok.Cleanup;
          import lombok.extern.slf4j.Slf4j;
          import org.springframework.beans.factory.annotation.Autowired;
          import org.springframework.core.io.ByteArrayResource;
          import org.springframework.core.io.FileSystemResource;
          import org.springframework.core.io.InputStreamResource;
          import org.springframework.mail.SimpleMailMessage;
          import org.springframework.mail.javamail.JavaMailSender;
          import org.springframework.mail.javamail.MimeMessageHelper;
          import org.springframework.stereotype.Service;
          import org.springframework.web.bind.annotation.GetMapping;
          import org.thymeleaf.TemplateEngine;
          import org.thymeleaf.context.Context;
          
          import javax.mail.MessagingException;
          import javax.mail.internet.MimeMessage;
          import java.io.ByteArrayOutputStream;
          import java.io.IOException;
          import java.io.InputStream;
          
          /**
           * 發送郵件工具
           *
           * @author zhuquanwen
           * @vesion 1.0
           * @date 2020/8/12 21:52
           * @since jdk1.8
           */
          @Service
          @Slf4j
          public class SendEmailService {
              @Autowired
              private JavaMailSender javaMailSender;
              @Autowired
              private TemplateEngine templateEngine;
          
              /**
               * 發送普通文本郵件
               *
               * @version 1.0
               * @since jdk1.8
               * @date 2020/8/12
               * @param from 發送郵件地址
               * @param to 接收郵件地址
               * @param title 郵件主題
               * @param content 郵件正文文本
               * */
              public void sendText(String from, String to, String title, String content) {
          
          
                  SimpleMailMessage message=new SimpleMailMessage();
                  // 發件人地址
                  message.setFrom(from);
                  // 收件人地址
                  message.setTo(to);
                  // 郵件標題
                  message.setSubject(title);
                  // 郵件正文
                  message.setText(content);
          
                  javaMailSender.send(message);
                  log.debug("郵件發送成功!");
              }
          
              /**
               * 發送HTML郵件
               * @version 1.0
               * @since jdk1.8
               * @date 2020/8/12
               * @param from 發送郵件地址
               * @param to 接收郵件地址
               * @param title 郵件主題
               * @param html 郵件正文html
               * */
              public void sendHtml(String from, String to, String title, String html) throws MessagingException {
          
                  MimeMessage message=javaMailSender.createMimeMessage();
                  // 這里與發送文本郵件有所不同
                  MimeMessageHelper helper=new MimeMessageHelper(message, true);
                  // 發件人地址
                  helper.setFrom(from);
                  // 收件人地址
                  helper.setTo(to);
                  helper.setSubject(title);
                  // 發送HTML郵件
                  helper.setText(html, true);
          
                  javaMailSender.send(message);
                  log.debug("郵件發送成功");
          
              }
          
              /**
               * 發送附件
               *
               *
               * @version 1.0
               * @since jdk1.8
               * @date 2020/8/12
               * @param from 發送郵件地址
               * @param to 接收郵件地址
               * @param title 郵件主題
               * @param html 郵件正文html
               * @param inputStream 附件輸入流
               * @param fileName 文件名稱
               *
               * */
              public void sendAttachment(String from, String to, String title, String html, InputStream inputStream, String fileName) throws MessagingException {
          
                  MimeMessage message=javaMailSender.createMimeMessage();
                  // 這里與發送文本郵件有所不同
                  MimeMessageHelper helper=new MimeMessageHelper(message, true);
                  // 發件人地址
                  helper.setFrom(from);
                  // 收件人地址
                  helper.setTo(to);
                  helper.setSubject(title);
                  // 發送HTML
                  helper.setText(html, true);
          
                  //發送附件
          
                  ByteArrayOutputStream baos=new ByteArrayOutputStream();
                  IoUtil.copy(inputStream, baos);
          
                  ByteArrayResource byteArrayResource=new ByteArrayResource(baos.toByteArray());
                  // 發送文件名
                  helper.addAttachment(fileName, byteArrayResource);
          
                  javaMailSender.send(message);
                  log.debug("發送成功");
          
              }
          
              /**
               * 測試發送thymeleaf模板郵件
               * templateName必須在resources/templates下
               *
               * @version 1.0
               * @since jdk1.8
               * @date 2020/8/12
               * @param from 發送郵件地址
               * @param to 接收郵件地址
               * @param title 郵件主題
               * @param templateName 模板名稱,templateName必須在resources/templates下
               * @param context 構建模板的上下文,構建方式參見單元測試
               * */
              @GetMapping("/template")
              public void sendTemplate(String from, String to, String title, String templateName, Context context) throws MessagingException {
          
                  MimeMessage message=javaMailSender.createMimeMessage();
                  // 這里與發送文本郵件有所不同
                  MimeMessageHelper helper=new MimeMessageHelper(message, true);
                  // 發件人地址
                  helper.setFrom(from);
                  // 收件人地址
                  helper.setTo(to);
                  helper.setSubject(title);
          
                  //獲取模板生成html
                  String html=templateEngine.process(templateName, context);
                  helper.setText(html, true);
          
                  javaMailSender.send(message);
                  log.debug("郵件發送成功");
          
              }
          
              /**
               * 測試發送thymeleaf模板郵件,并攜帶附件
               * templateName必須在resources/templates下
               * @version 1.0
               * @since jdk1.8
               * @date 2020/8/12
               * @param from 發送郵件地址
               * @param to 接收郵件地址
               * @param title 郵件主題
               * @param templateName 模板名稱,templateName必須在resources/templates下
               * @param context 構建模板的上下文,構建方式參見單元測試
               * @param inputStream 附件輸入流
               * @param fileName 文件名稱
               * */
              public void sendTemplateWithAttachment(String from, String to, String title, String templateName, Context context, InputStream inputStream, String fileName) throws MessagingException {
                  //獲取模板生成html
                  String html=templateEngine.process(templateName, context);
                  sendAttachment(from, to, title, html, inputStream, fileName);
              }
          }
          

          5、單元測試 

          pring Boot Mail

          在Spring Boot中發送郵件,需要使用Spring提供的org.springframework.mail.javamail.JavaMailSender,它提供了許多簡易的用法,可以發送簡單郵件,HTML格式郵件,帶附件的郵件及模板郵件。

          1創建Spring Boot工程并引入依賴

          創建Spring Boot工程

          添加依賴: spring-boot-starter-mail

          <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> 復制代碼

          2 郵件配置

          在application.yml配置文件中添加郵件相關配置(以163郵箱為例)

          spring:
            ## 郵件配置
            mail:
              host: smtp.163.com
              username: 郵箱
              password: 郵箱授權密碼
              properties:
                mail:
                  smtp:
                    auth: true
                    starttls:
                      enable: true
                      required: true
          復制代碼

          3 發送簡單郵件

          使用Spring Boot發送簡單郵件

          @Service(value="jmsService")
          public class JmsService {
          
              @Autowired
              private JavaMailSender jms;
          
              public void sendSimpleMail(String sender, String receiver, String subject, String text) {
                  try {
                      SimpleMailMessage message=new SimpleMailMessage();
                      message.setFrom(sender);       // 發送者
                      message.setTo(receiver);       // 接受者
                      message.setSubject(subject);   // 郵件主題
                      message.setText(text);         // 郵件正文
          
                      jms.send(message);
                  } catch (Exception exception) {
                      // TODO 異常處理
                  }
              }
          }
          復制代碼

          4 發送HTML格式郵件

          使用Spring Boot發送HTML格式郵件

          @Service(value="jmsService")
          public class JmsService {
          
              @Autowired
              private JavaMailSender jms;
          
              public void sendHtmlMail(String sender, String receiver, String subject, String htmlText) {
                  MimeMessage message=null;
          
                  try {
                      message=jms.createMimeMessage();
                      MimeMessageHelper helper=new MimeMessageHelper(message, true);
                      helper.setFrom(sender);       // 發送者
                      helper.setTo(receiver);       // 接受者
                      helper.setSubject(subject);   // 郵件主題
          
                      if (StringUtil.isNotEmpty(htmlText)) {
                          StringBuffer sb=new StringBuffer(htmlText);
                          helper.setText(sb.toString(), true);  // HTML
                      }
          
                      jms.send(message);
                  } catch (Exception exception) {
                      // TODO 異常處理
                  }
              }
          }
          復制代碼

          5 發送帶附件的郵件

          使用Spring Boot發送帶附件的郵件

          @Service(value="jmsService")
          public class JmsService {
          
              @Autowired
              private JavaMailSender jms;
          
              public void sendSimpleMailWithAttachment(String sender, String receiver, String subject, String filePath) {
                  MimeMessage message=null;
          
                  try {
                      message=jms.createMimeMessage();
                      MimeMessageHelper helper=new MimeMessageHelper(message, true);
                      helper.setFrom(sender);             // 發送者
                      helper.setTo(receiver);             // 接受者
                      helper.setSubject(subject);         // 郵件主題
                      helper.setText("詳情參見附件內容!");  // 郵件正文
          
          
                      File file=new File(filePath);
                      FileSystemResource fileResource=new FileSystemResource(file);
                      helper.addAttachment(file.getName(), fileResource);  // 附件
          
                      jms.send(message);
                  } catch (Exception exception) {
                      // TODO 異常處理
                  }
              }
          }
          復制代碼

          6 發送模板郵件

          使用Spring Boot發送模板郵件,以thymeleaf為例

          6.1 引入模板引擎

          <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 復制代碼

          6.2 thymeleaf配置

          spring:
            ## thymelea模板配置
            thymeleaf:
              #thymeleaf 所在路徑
              prefix: classpath:/templates/
              #thymeleaf 后綴
              suffix: .html
              #thymeleaf 采用的標準
              mode: HTML5
              #thymeleaf 編碼格式
              encoding: UTF-8
          復制代碼

          6.3 新建郵件模板

          在項目resources/templates目錄下新建郵件模板template.html

          <!DOCTYPE html>
          <html>
          <head>
              <meta charset="utf-8">
              <title>注冊碼</title>
          </head>
          
          <body>
              您好,您的注冊碼為<span th:text="${code}"></span>,請在5分鐘內使用完成操作。
          </body>
          
          </html>
          復制代碼

          6.4 發送模板郵件

          @Service(value="jmsService")
          public class JmsService {
          
              @Autowired
              private JavaMailSender jms;
          
              @Autowired
              private TemplateEngine templateEngine;
          
              public void sendTemplateEmail(String sender, String receiver, String subject, String code) {
                  MimeMessage message=null;
          
                  try {
                      message=jms.createMimeMessage();
                      MimeMessageHelper helper=new MimeMessageHelper(message, true);
                      helper.setFrom(sender);              // 發送者
                      helper.setTo(receiver);              // 接受者
                      helper.setSubject(subject);          // 郵件主題
          
                      Context context=new Context();
                      context.setVariable("code", code);   // 模板郵件參數
          
                      String template=templateEngine.process("template", context);
                      helper.setText(template, true);
          
                      jms.send(message);
                  } catch (Exception exception) {
                      // TODO 異常處理
                  }
              }
          }


          鏈接:https://juejin.im/post/6876818580286603278
          來源:掘金

          pring 對 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 中配置郵件信息

          #email
          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 文本的郵件、 內嵌圖片的郵件、 包含附件的郵件。

          發送包含HTML文本的郵件

          發送包含內嵌圖片的郵件

          發送包含附件的郵件

          喜歡的小伙伴,點個關注吧!


          主站蜘蛛池模板: 国产vr一区二区在线观看| 亚洲天堂一区二区| 一区二区三区影院| 中文字幕一区日韩精品| 精品国产不卡一区二区三区| 亚洲精品色播一区二区| 亚洲一区免费观看| 看电影来5566一区.二区| 免费在线观看一区| 激情爆乳一区二区三区| 国产一区二区在线观看| 中文字幕一区在线观看视频| 亚洲美女一区二区三区| 亚洲一区二区三区久久久久| 久久国产精品最新一区| 鲁丝片一区二区三区免费| 日韩AV无码一区二区三区不卡毛片 | 东京热无码一区二区三区av| 精品在线一区二区| 小泽玛丽无码视频一区| 国产高清在线精品一区二区| 一区二区三区在线观看视频| 人妻无码一区二区三区| 一区二区三区在线观看中文字幕 | 无码视频免费一区二三区| 色窝窝免费一区二区三区| 日韩欧美一区二区三区免费观看| 亚洲欧美成人一区二区三区| 亚洲一区AV无码少妇电影| 精品无码国产AV一区二区三区 | 日本激情一区二区三区| 亚洲日韩AV无码一区二区三区人| 亚洲字幕AV一区二区三区四区| 无码少妇一区二区浪潮免费| 国产成人欧美一区二区三区 | 国产成人一区二区在线不卡| 波多野结衣一区在线观看| 大伊香蕉精品一区视频在线 | 亚洲熟妇无码一区二区三区导航| 鲁丝丝国产一区二区| 亚洲AV无码一区二区三区在线观看 |