Spring?Boot整合郵箱發(fā)送郵件實(shí)例
1. 準(zhǔn)備工作
登錄進(jìn)自己的 qq 郵箱獲取授權(quán)碼
設(shè)置 – 賬戶 – POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務(wù)
點(diǎn)擊開始獲取授權(quán)碼,將授權(quán)碼保存下來,下面代碼整合的時(shí)候需要使用
2. 代碼整合
創(chuàng)建一個(gè) Spring Boot 項(xiàng)目,引入以下依賴
<!-- email --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
配置文件
server: port: 8080 spring: # email 配置 mail: # SMTP 服務(wù)器地址 host: smtp.qq.com username: # 你的qq 郵箱地址 password: # 授權(quán)碼,上面從 qq 郵箱官網(wǎng)得到的授權(quán)碼 port: 587 protocol: smtp default-encoding: UTF-8
創(chuàng)建一個(gè)郵件收件人信息的實(shí)體類
/** * @author lishisen * @description 郵件收件人信息 * @date 2022/1/9 9:37 **/ @AllArgsConstructor @NoArgsConstructor @Data public class EmailModel implements Serializable { // 收件人郵箱地址 private String receiveEmailAddress; // 郵箱主題 private String emailTheme; // 郵件內(nèi)容 private String emailContent; }
創(chuàng)建一個(gè)服務(wù)提供類,SendEmailService.java
/** * @author lishisen * @description 郵件發(fā)送服務(wù)類 * @date 2022/1/9 9:40 **/ @Slf4j @Component public class SendEmailService { @Autowired private JavaMailSender javaMailSender; @Autowired private JavaMailSenderImpl javaMailSenderImpl; // 發(fā)送者地址 private String posterAddress = "1876419736@qq.com"; // 發(fā)送者名稱 private String posterName = "測試郵件發(fā)送"; /** * 文本發(fā)送 **/ public void sendEmailAsText(final EmailModel emailModel) { System.out.println(emailModel.toString()); MimeMessagePreparator mimeMessagePreparator = mimeMessage -> { mimeMessage.setFrom(posterAddress); mimeMessage.setRecipients(Message.RecipientType.TO, emailModel.getReceiveEmailAddress()); mimeMessage.setText("發(fā)送者地址:" + posterAddress + '\n' + "發(fā)送者名稱:" + posterName + '\n' + "內(nèi)容:" + emailModel.getEmailContent()); }; try { this.javaMailSender.send(mimeMessagePreparator); log.info("郵箱已返送至[{}]郵箱!", emailModel.getReceiveEmailAddress()); } catch (MailException e) { log.error("郵箱異常:{}", e); } } /** * html 網(wǎng)頁發(fā)送 * 該方法為同步方法 **/ public void sendEmailAsSysExceptionHtml(final EmailModel emailModel, String info) { MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage(); MimeMessageHelper mimeMessageHelper; try { mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); mimeMessageHelper.setFrom(posterAddress); mimeMessageHelper.setTo(emailModel.getReceiveEmailAddress()); mimeMessageHelper.setSubject(emailModel.getEmailTheme()); mimeMessageHelper.setText( "<!DOCTYPE html>\n" + "<html lang=\"en\">\n" + "<head>\n" + " <meta charset=\"UTF-8\">\n" + " <title>Title</title>\n" + "</head>\n" + "<body>\n" + "<h2>" + info + "</h2>\n" + "<h3>您的驗(yàn)證碼為:<span style='color: red'" + ">" + emailModel.getEmailContent() + "</span> " + ",請?jiān)?5 分鐘內(nèi)進(jìn)行驗(yàn)證</h3>\n" + "</body>\n" + "</html>" , true); this.javaMailSender.send(mimeMessage); log.info("郵箱已返送至[{}]郵箱!", emailModel.getReceiveEmailAddress()); } catch (MessagingException e) { e.printStackTrace(); } } }
測試使用
@Autowired private SendEmailService sendEmailService; @Test public void sendMailTest() { // 創(chuàng)建收件人實(shí)體類,封裝收件人的信息 EmailModel emailModel = new EmailModel(); emailModel.setReceiveEmailAddress("18xxxxxqq.com"); emailModel.setEmailTheme("測試發(fā)送"); emailModel.setEmailContent("測試發(fā)送郵箱主體信息內(nèi)容"); // 調(diào)用發(fā)送服務(wù)方法執(zhí)行發(fā)送任務(wù) sendEmailService.sendEmailAsText(emailModel); System.out.println("郵件發(fā)送成功"); }
總結(jié)
到此這篇關(guān)于Spring Boot整合郵箱發(fā)送郵件實(shí)例的文章就介紹到這了,更多相關(guān)Spring Boot郵箱發(fā)送內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java狀態(tài)設(shè)計(jì)模式實(shí)現(xiàn)對象狀態(tài)轉(zhuǎn)換的優(yōu)雅方式
Java狀態(tài)設(shè)計(jì)模式通過將對象的行為和狀態(tài)分離,使對象能夠根據(jù)不同的狀態(tài)進(jìn)行不同的行為操作。它通過將狀態(tài)抽象成一個(gè)獨(dú)立的類來實(shí)現(xiàn)對狀態(tài)的封裝,從而簡化了復(fù)雜的條件判斷和狀態(tài)轉(zhuǎn)換2023-04-04SpringBoot 項(xiàng)目添加 MDC 日志鏈路追蹤的執(zhí)行流程
日志鏈路追蹤就是將一個(gè)標(biāo)志跨線程進(jìn)行傳遞,在一般的小項(xiàng)目中也就是在你新起一個(gè)線程的時(shí)候,或者使用線程池執(zhí)行任務(wù)的時(shí)候會(huì)用到,比如追蹤一個(gè)用戶請求的完整執(zhí)行流程,本文給大家介紹SpringBoot MDC 日志鏈路追蹤的代碼,感興趣的朋友一起看看吧2021-06-06解決java maven項(xiàng)目找不到j(luò)console-1.8.0.jar和tools-1.8.0.jar包問題
這篇文章主要介紹了解決java maven項(xiàng)目找不到j(luò)console-1.8.0.jar和tools-1.8.0.jar包問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08SpringBoot集成Zipkin實(shí)現(xiàn)分布式全鏈路監(jiān)控
這篇文章主要介紹了SpringBoot集成Zipkin實(shí)現(xiàn)分布式全鏈路監(jiān)控的方法啊,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09Spring Boot 與 Kotlin 上傳文件的示例代碼
這篇文章主要介紹了Spring Boot 與 Kotlin 上傳文件的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01