封装一个邮件发送工具类,一个字,巴适
生活随笔
收集整理的這篇文章主要介紹了
封装一个邮件发送工具类,一个字,巴适
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
系列文章目錄
文章目錄
- 系列文章目錄
- 前言
- 一、 介紹
- 二、二話不說(shuō)開(kāi)始干
- 1.引入庫(kù)
- 2. 郵件發(fā)送實(shí)體(Mail)
- 3. 郵件發(fā)送類(lèi)型枚舉(MailType )
- 4.郵件發(fā)送抽象類(lèi)(AbstractMail )
- 5. 郵件發(fā)送工具類(lèi)
- 6. 如何使用
- 總結(jié)
前言
徒手封裝一個(gè)簡(jiǎn)單郵件工具類(lèi)一、 介紹
學(xué)會(huì)封裝代碼,封裝工具類(lèi),將會(huì)讓代碼的復(fù)用性更高,還可以減少工作量。一個(gè)字:巴適
二、二話不說(shuō)開(kāi)始干
1.引入庫(kù)
引入maven依賴(lài):
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency>2. 郵件發(fā)送實(shí)體(Mail)
package com.breez.awesome.utils.mail;import lombok.Data; import lombok.experimental.Accessors;import java.io.Serializable;/*** 郵件實(shí)體* @author XinLiu* @email lx90352@163.com*/ @Data @Accessors(chain = true) public class Mail implements Serializable {/*** 郵件ID*/private String id;/*** 郵件發(fā)送者*/private String from;/*** 郵件接收者*/private String to;/*** 郵件內(nèi)容*/private String text;/*** 郵件主題*/private String subject;/*** 附件地址*/private String attachment; }3. 郵件發(fā)送類(lèi)型枚舉(MailType )
郵件發(fā)送有三種類(lèi)型,分別是簡(jiǎn)單類(lèi)型、支持HTML格式的、帶附件的類(lèi)型,這種常量,我們就可以用一個(gè)枚舉類(lèi)來(lái)保存。
package com.breez.awesome.utils.mail;/*** 郵件發(fā)送的類(lèi)型** @author XinLiu* @since 2021/9/21* @email lx90352@163.com*/ public enum MailType {/*** 簡(jiǎn)單郵件類(lèi)型*/SIMPLE,/*** HTML格式代碼*/HTML,/*** 帶附件類(lèi)型*/ATTACHMENT}4.郵件發(fā)送抽象類(lèi)(AbstractMail )
郵件發(fā)送抽象類(lèi)用于郵件的具體發(fā)送,其中有兩個(gè)抽象方法,一個(gè)是支持自定義發(fā)送類(lèi)型,一個(gè)默認(rèn)簡(jiǎn)單類(lèi)型。定義抽象類(lèi)目的是方便子類(lèi)按照自己的策略自定義發(fā)送類(lèi)型
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;/*** 郵件發(fā)送抽象類(lèi)** @author BreezAm* @email lx90352@163.com* @since 2021/9/21*/ public abstract class AbstractMail {@Autowiredprivate JavaMailSender javaMailSender;/*** 發(fā)送一封簡(jiǎn)單的郵件** @param mail 郵件實(shí)體*/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);}/*** 發(fā)送帶有HTML格式的郵件** @param mail 郵件實(shí)體*/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();}}/*** 發(fā)送帶附件的郵件** @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();}}/*** 郵件發(fā)送策略* <p>根據(jù)用戶(hù)指定郵件的類(lèi)型執(zhí)行相應(yīng)的發(fā)送策略</p>** @param mail 郵件實(shí)體* @param type 發(fā)送的類(lèi)型*/public abstract void send(Mail mail, MailType type);/*** <p>此方法表示,如果不指定類(lèi)型的話,則為默認(rèn)類(lèi)型,具體什么類(lèi)型由子類(lèi)決定</p>** @param mail 郵件實(shí)體*/public abstract void send(Mail mail); }5. 郵件發(fā)送工具類(lèi)
郵件發(fā)送的策略,繼承自抽象類(lèi)。
package com.breez.awesome.utils.mail;import org.springframework.stereotype.Component;/*** 郵件發(fā)送工具包[原創(chuàng)]** @author XinLiu* @email lx90352@163.com* @since 2021/9/21*/ @Component public class MailUtil extends AbstractMail {/*** 郵件發(fā)送策略* <p>根據(jù)用戶(hù)指定郵件的類(lèi)型執(zhí)行相應(yīng)的發(fā)送策略</p>** @param mail 郵件實(shí)體* @param type 發(fā)送的類(lèi)型*/@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>此方法表示,如果不指定類(lèi)型的話,則為默認(rèn)類(lèi)型,默認(rèn)為簡(jiǎn)單類(lèi)型</p>** @param mail 郵件實(shí)體*/@Overridepublic void send(Mail mail) {send(mail, MailType.SIMPLE);} }6. 如何使用
發(fā)送簡(jiǎn)單類(lèi)型郵件
mailUtil.send(mail, MailType.SIMPLE)發(fā)送支持HTML格式的郵件
mailUtil.send(mail, MailType.HTML)發(fā)送支持帶有附件的郵件
mailUtil.send(mail, MailType.ATTACHMENT)總結(jié)
抽象類(lèi)還可以再進(jìn)行封裝,讓代碼更少。
總結(jié)
以上是生活随笔為你收集整理的封装一个邮件发送工具类,一个字,巴适的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: vue切换css样式
- 下一篇: Java-打印三角形