您好,登錄后才能下訂單哦!
前言
在許多企業級項目中,需要用到郵件發送的功能,如:
創建工程導入依賴
<!-- 郵箱發送依賴 --> <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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。