封装一个邮件发送工具类,一个字,巴适
生活随笔
收集整理的這篇文章主要介紹了
封装一个邮件发送工具类,一个字,巴适
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
系列文章目錄
文章目錄
- 系列文章目錄
- 前言
- 一、 介紹
- 二、二話不說開始干
- 1.引入庫
- 2. 郵件發送實體(Mail)
- 3. 郵件發送類型枚舉(MailType )
- 4.郵件發送抽象類(AbstractMail )
- 5. 郵件發送工具類
- 6. 如何使用
- 總結
前言
徒手封裝一個簡單郵件工具類一、 介紹
學會封裝代碼,封裝工具類,將會讓代碼的復用性更高,還可以減少工作量。一個字:巴適
二、二話不說開始干
1.引入庫
引入maven依賴:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency>2. 郵件發送實體(Mail)
package com.breez.awesome.utils.mail;import lombok.Data; import lombok.experimental.Accessors;import java.io.Serializable;/*** 郵件實體* @author XinLiu* @email lx90352@163.com*/ @Data @Accessors(chain = true) public class Mail implements Serializable {/*** 郵件ID*/private String id;/*** 郵件發送者*/private String from;/*** 郵件接收者*/private String to;/*** 郵件內容*/private String text;/*** 郵件主題*/private String subject;/*** 附件地址*/private String attachment; }3. 郵件發送類型枚舉(MailType )
郵件發送有三種類型,分別是簡單類型、支持HTML格式的、帶附件的類型,這種常量,我們就可以用一個枚舉類來保存。
package com.breez.awesome.utils.mail;/*** 郵件發送的類型** @author XinLiu* @since 2021/9/21* @email lx90352@163.com*/ public enum MailType {/*** 簡單郵件類型*/SIMPLE,/*** HTML格式代碼*/HTML,/*** 帶附件類型*/ATTACHMENT}4.郵件發送抽象類(AbstractMail )
郵件發送抽象類用于郵件的具體發送,其中有兩個抽象方法,一個是支持自定義發送類型,一個默認簡單類型。定義抽象類目的是方便子類按照自己的策略自定義發送類型
package com.breez.awesome.utils.mail;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 javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File;/*** 郵件發送抽象類** @author BreezAm* @email lx90352@163.com* @since 2021/9/21*/ public abstract class AbstractMail {@Autowiredprivate JavaMailSender javaMailSender;/*** 發送一封簡單的郵件** @param mail 郵件實體*/public void handleSimpleMail(Mail mail) {SimpleMailMessage mailMessage = new SimpleMailMessage();mailMessage.setFrom(mail.getFrom());mailMessage.setTo(mail.getTo());mailMessage.setSubject(mail.getSubject());mailMessage.setText(mail.getText());javaMailSender.send(mailMessage);}/*** 發送帶有HTML格式的郵件** @param mail 郵件實體*/public void handleHtmlMail(Mail mail) {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper message = null;try {message = new MimeMessageHelper(mimeMessage, true);message.setFrom(mail.getFrom());message.setTo(mail.getTo());message.setText(mail.getText(), true);message.setSubject(mail.getSubject());javaMailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}/*** 發送帶附件的郵件** @param mail 郵件*/public void handleAttachmentMail(Mail mail) {MimeMessage mimeMessage = javaMailSender.createMimeMessage();MimeMessageHelper message = null;try {message = new MimeMessageHelper(mimeMessage, true);message.setFrom(mail.getFrom());message.setTo(mail.getTo());message.setText(mail.getText(), true);message.setSubject(mail.getSubject());FileSystemResource resource = new FileSystemResource(mail.getAttachment());String fileName = mail.getAttachment().substring(mail.getAttachment().lastIndexOf(File.separator) + 1);message.addAttachment(fileName, resource);javaMailSender.send(mimeMessage);} catch (MessagingException e) {e.printStackTrace();}}/*** 郵件發送策略* <p>根據用戶指定郵件的類型執行相應的發送策略</p>** @param mail 郵件實體* @param type 發送的類型*/public abstract void send(Mail mail, MailType type);/*** <p>此方法表示,如果不指定類型的話,則為默認類型,具體什么類型由子類決定</p>** @param mail 郵件實體*/public abstract void send(Mail mail); }5. 郵件發送工具類
郵件發送的策略,繼承自抽象類。
package com.breez.awesome.utils.mail;import org.springframework.stereotype.Component;/*** 郵件發送工具包[原創]** @author XinLiu* @email lx90352@163.com* @since 2021/9/21*/ @Component public class MailUtil extends AbstractMail {/*** 郵件發送策略* <p>根據用戶指定郵件的類型執行相應的發送策略</p>** @param mail 郵件實體* @param type 發送的類型*/@Overridepublic void send(Mail mail, MailType type) {switch (type) {case SIMPLE:super.handleSimpleMail(mail);break;case HTML:super.handleHtmlMail(mail);break;case ATTACHMENT:super.handleAttachmentMail(mail);break;}}/*** <p>此方法表示,如果不指定類型的話,則為默認類型,默認為簡單類型</p>** @param mail 郵件實體*/@Overridepublic void send(Mail mail) {send(mail, MailType.SIMPLE);} }6. 如何使用
發送簡單類型郵件
mailUtil.send(mail, MailType.SIMPLE)發送支持HTML格式的郵件
mailUtil.send(mail, MailType.HTML)發送支持帶有附件的郵件
mailUtil.send(mail, MailType.ATTACHMENT)總結
抽象類還可以再進行封裝,讓代碼更少。
總結
以上是生活随笔為你收集整理的封装一个邮件发送工具类,一个字,巴适的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue切换css样式
- 下一篇: Java-打印三角形