91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot中快速實現郵箱發送代碼解析

發布時間:2020-10-04 11:53:54 來源:腳本之家 閱讀:136 作者:SimpleWu 欄目:編程語言

前言

在許多企業級項目中,需要用到郵件發送的功能,如:

  • 注冊用戶時需要郵箱發送驗證
  • 用戶生日時發送郵件通知祝賀
  • 發送郵件給用戶等

創建工程導入依賴

<!-- 郵箱發送依賴 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- 小火龍代碼簡化 -->
<dependency>
  <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
  <version>1.18.8</version>
</dependency>

本工程依賴于SpringBoot,是基于SpringBoot再次對郵箱發送進行了一次封裝。

創建Application.properties

# JavaMailSender 郵件發送的配置
spring.mail.host=smtp.qq.com
spring.mail.username=lovelyWu98k@qq.com
#授權碼
spring.mail.password=
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.default-encoding=UTF-8

封裝郵箱發送工具類

創建郵箱信息實體類,如下:

/**
 * 郵件信息實體
 *
 * @author:伍梓濤
 * @version:1.0.0
 * @Modified By:SimpleWu
 * @CopyRright (c)2019-:YUM架構平臺
 */
@Data
public class MailEntity {
  private String to; //收件人
  private String subject;//標題
  private String text;//正文
  private boolean isHtml = false;//是否html郵件
  private List<String> files;//附件地址
  private Date sentDate;//發送時間

}

創建郵箱信息實體類工具,快捷創建郵件信息

/**
 * 郵箱發送信息統一處理封裝
 *
 * @author:伍梓濤
 * @version:1.0.0
 * @Modified By:SimpleWu
 * @CopyRright (c)2019-:YUM架構平臺
 */
@Slf4j
public class MailEntityHelper {


  public static MimeMessageHelper craeteMessageHelper(MimeMessage mimeMessage, MailEntity mailBean) throws MessagingException {

    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    // mimeMessageHelper.setFrom(emailSender);//發件人
    mimeMessageHelper.setTo(mailBean.getTo());//收件人
    mimeMessageHelper.setSubject(mailBean.getSubject());//標題
    mimeMessageHelper.setText(mailBean.getText(), mailBean.isHtml());//是否html
    mimeMessageHelper.setSentDate(mailBean.getSentDate() == null ? new Date() : mailBean.getSentDate());// 客戶端郵箱發送時間
    if (mailBean.getFiles() != null && mailBean.getFiles().size() > 0) {
      //附件添加
      mailBean.getFiles().forEach(filename -> {
        String ext = filename.substring(filename.lastIndexOf(".") + 1, filename.length());
        File diskfile = new File(filename);
        try {
          mimeMessageHelper.addAttachment(diskfile.getName(), diskfile);
        } catch (MessagingException e) {
          e.printStackTrace();
          log.error("設置附件失敗:{}", mailBean);
        }
      });
    }
    return mimeMessageHelper;
  }

}

創建郵箱發送工具類,進行郵箱發送:

/**
 * 郵箱發送工具類
 *
 * @author:伍梓濤
 * @version:1.0.0
 * @Modified By:SimpleWu
 * @CopyRright (c)2019-:YUM架構平臺
 */
@Component
@Slf4j
public class MailHelper {


  @Autowired
  private JavaMailSender javaMailSender;

  @Value("${spring.mail.username}")
  private String emailSender;

  private static MailHelper mailHelper;

  public MailHelper() {
    mailHelper = this;
  }

  /**
   * 構建靜態獲取實例
   *
   * @return
   */
  public static MailHelper buidler() {
    if (mailHelper == null) {
      return null;
    }
    return mailHelper;
  }

  /*public void sendSimpleMail(EmailContextPojo mailBean) {
    try {
      SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
      //郵件發送人
      simpleMailMessage.setFrom(emailSender);
      //郵件接收人
      simpleMailMessage.setTo(mailBean.getTo());
      //郵件主題
      simpleMailMessage.setSubject(mailBean.getSubject());
      //郵件內容
      simpleMailMessage.setText(mailBean.getText());
      javaMailSender.send(simpleMailMessage);
    } catch (Exception e) {
      e.printStackTrace();
      log.error("郵件發送失敗", e.getMessage());
    }
  }*/


  public void sendMail(MailEntity mailBean) {
    MimeMessage mimeMailMessage = null;
    try {
      mimeMailMessage = javaMailSender.createMimeMessage();
      MimeMessageHelper mimeMessageHelper = MailEntityHelper.craeteMessageHelper(mimeMailMessage, mailBean);
      mimeMessageHelper.setFrom(emailSender);//發件人
      javaMailSender.send(mimeMailMessage);
    } catch (Exception e) {
      log.error("郵件發送失敗", e.getMessage());
    }
  }


  public void sendMail(MailEntity... mailBeans) {
    //批量發送集合
    List<MimeMessage> mimeMessages = new ArrayList<>(mailBeans.length);
    try {
      if (mailBeans != null || mailBeans.length > 0) {
        for (int i = 0; i < mailBeans.length; i++) {
          MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
          MimeMessageHelper messageHelper = MailEntityHelper.craeteMessageHelper(mimeMailMessage, mailBeans[i]);
          messageHelper.setFrom(emailSender);//發件人
          mimeMessages.add(mimeMailMessage);
        }
      }

      MimeMessage[] resultMessage = new MimeMessage[mimeMessages.size()];
      mimeMessages.toArray(resultMessage);
      javaMailSender.send((resultMessage));
    } catch (Exception e) {
      log.error("郵件發送失敗", e.getMessage());
    }
  }

}

在之前通過郵箱發送信息統一處理的工具類,對郵件信息實體進行封裝后,這里就只需要傳入對象參數即可。由于在這里使用的是SpringBoot已經封裝好的,由于我們要把它當成工具類使用,每次需要注入并不方便。

所在在類中加了個靜態對象,在Spring 容器實例化的時候給他初始化直接賦值給javaMailSender并且通過buidler()可以靜態獲取到實例對象,但是這樣如果被重新創建對象后就會產生問題,所以最好在工具類中使用Spring 容器去獲取 javaMailSender即可 。

發送郵件

1.發送普通郵件

 MailEntity emailContextPojo = new MailEntity();
 emailContextPojo.setSubject("Ycloud 郵箱標題");
 emailContextPojo.setText("Ycloud 郵箱正文");
 emailContextPojo.setTo(" 接收郵箱號 ");
 MailHelper.buidler().sendMail(emailContextPojo);

2.發送Html郵件

 emailContextPojo.setHtml(true);

只需要將信息實體類設置成true即可。

3.發送附件

emailContextPojo.setFiles(Arrays.asList("D:\\Yum系統架構平臺\\004.高系統部署\\004.PXC\\部署手冊.docx"));

只需要增加附件路徑即可。

注: 請勿直接在項目中使用郵箱發送

本文代碼案例: https://github.com/450255266/open-doubi/tree/master/SpringBoot/email

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

保亭| 酒泉市| 灵丘县| 化隆| 邹城市| 安乡县| 射阳县| 海丰县| 玉屏| 剑河县| 洛浦县| 大厂| 赤城县| 大名县| 融水| 双流县| 沾化县| 漳州市| 崇礼县| 湄潭县| 鄱阳县| 闻喜县| 民丰县| 雅江县| 临沂市| 都兰县| 新蔡县| 呼图壁县| 绍兴市| 雅江县| 芷江| 神池县| 密山市| 长葛市| 宁明县| 华坪县| 镇原县| 小金县| 汝阳县| 阳新县| 大同县|