摘要:慕課網(wǎng)發(fā)送郵件學(xué)習(xí)總結(jié)時間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。
慕課網(wǎng)《Spring Boot 發(fā)送郵件》學(xué)習(xí)總結(jié)
時間:2018年09月08日星期六
說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com
教學(xué)源碼:https://github.com/ityouknow/...
學(xué)習(xí)源碼:https://github.com/zccodere/s...
第一章:背景簡介 1-1 課程介紹第一部分:背景
郵件使用場景
郵件發(fā)送原理
Spring Boot介紹
前置知識
第二部分:實踐
發(fā)送文本郵件
發(fā)送html郵件
發(fā)送附件郵件
發(fā)送帶圖片的郵件
郵件模版
郵件系統(tǒng)
1-2 基礎(chǔ)知識郵件使用場景
注冊驗證
網(wǎng)站營銷
找回密碼
監(jiān)控告警
觸發(fā)機制
郵件發(fā)送原理
郵件傳輸協(xié)議:SMTP協(xié)議和POP3協(xié)議
內(nèi)容不斷發(fā)展:IMAP協(xié)議和Mime協(xié)議
郵件發(fā)送流程
Spring Boot介紹
約定大于配置
簡單快速開發(fā)
強大的生態(tài)鏈
前置知識
會使用Spring進(jìn)行開發(fā)
對Spring Boot有一定的了解
會使用Maven構(gòu)建項目
使用html和Thymeleaf模版技術(shù)
理解郵件發(fā)送的基礎(chǔ)知識
第二章:實踐開發(fā) 2-1 項目搭建開發(fā)流程
基礎(chǔ)配置
文本郵件
html郵件
附件郵件
圖片郵件
模版郵件
Hello World項目
構(gòu)建工具:start.spring.io
基礎(chǔ)配置
編寫Hello World
進(jìn)行測試
創(chuàng)建名為48-boot-mail-hello的maven工程pom如下
48-boot-mail com.myimooc 1.0-SNAPSHOT 4.0.0 48-boot-mail-hello 2.0.4.RELEASE org.springframework.boot spring-boot-parent ${spring.boot.version} pom import org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
1.編寫HelloService類
package com.myimooc.boot.mail.hello.service; import org.springframework.stereotype.Service; /** *
* 標(biāo)題: Hello 服務(wù)
* 描述: Hello 服務(wù)
* 時間: 2018/09/08
* * @author zc */ @Service public class HelloService { public void sayHello(){ System.out.println("Hello World"); } }
2.編寫HelloApplication類
package com.myimooc.boot.mail.hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** *
* 標(biāo)題: 啟動類
* 描述: 啟動類
* 時間: 2018/09/08
* * @author zc */ @SpringBootApplication public class HelloApplication { public static void main(String[] args) { SpringApplication.run(HelloApplication.class, args); } }
3.編寫HelloServiceTest類
package com.myimooc.boot.mail.hello.service; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; /** *2-2 發(fā)送郵件
* 標(biāo)題: Hello 服務(wù)測試
* 描述: Hello 服務(wù)測試
* 時間: 2018/09/08
* * @author zc */ @RunWith(SpringRunner.class) @SpringBootTest public class HelloServiceTest { @Autowired private HelloService helloService; @Test public void sayHelloTest() { this.helloService.sayHello(); } }
簡單文本郵件
引入相關(guān)jar包
配置郵箱參數(shù)
封裝SimpleMailMessage
JavaMailSender進(jìn)行發(fā)送
創(chuàng)建名為48-boot-mail-mail的maven工程pom如下
48-boot-mail com.myimooc 1.0-SNAPSHOT 4.0.0 48-boot-mail-mail 2.0.4.RELEASE org.springframework.boot spring-boot-parent ${spring.boot.version} pom import org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-mail org.springframework.boot spring-boot-starter-thymeleaf org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-maven-plugin
1.編寫MailApplication類
package com.myimooc.boot.mail.mail; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** *
* 標(biāo)題: 啟動類
* 描述: 啟動類
* 時間: 2018/09/08
* * @author zc */ @SpringBootApplication public class MailApplication { public static void main(String[] args) { SpringApplication.run(MailApplication.class, args); } }
2.編寫application.properties
#----------郵件發(fā)送配置 # 郵件發(fā)送協(xié)議 spring.mail.host=smtp.163.com # 用戶名 spring.mail.username=zccodere@163.com # 授權(quán)碼,并非登錄密碼 spring.mail.password=yourpassword # 默認(rèn)編碼 spring.mail.default-encoding=UTF-8
3.編寫MailService類
package com.myimooc.boot.mail.mail.service; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Service; import org.thymeleaf.standard.expression.MessageExpression; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; /** *
* 標(biāo)題: 郵件服務(wù)
* 描述: 郵件服務(wù)
* 時間: 2018/09/08
* * @author zc */ @Service public class MailService { private Logger logger = LoggerFactory.getLogger(getClass()); /** * 發(fā)送人 */ @Value("${spring.mail.username}") private String from; /** * 注入JavaMailSender */ @Autowired private JavaMailSender mailSender; /** * 發(fā)送文本郵件 * * @param to 收件郵箱地址 * @param subject 主題 * @param content 內(nèi)容 */ public void sendSimpleMail(String to, String subject, String content) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(content); message.setFrom(from); this.mailSender.send(message); } /** * 發(fā)送html郵件 * * @param to 收件郵箱地址 * @param subject 主題 * @param content 內(nèi)容 * @throws Exception 異常 */ public void sendHtmlMail(String to, String subject, String content) throws Exception { MimeMessage message = this.mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); helper.setFrom(from); this.mailSender.send(message); } /** * 發(fā)送附件郵件 * * @param to 收件郵箱地址 * @param subject 主題 * @param content 內(nèi)容 * @param filePaths 文件路徑 * @throws Exception 異常 */ public void sendAttachmentsMail(String to, String subject, String content, String[] filePaths) throws Exception { MimeMessage message = this.mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); FileSystemResource file; for (String filePath : filePaths) { file = new FileSystemResource(new File(filePath)); String fileName = file.getFilename(); helper.addAttachment(fileName, file); } helper.setFrom(from); this.mailSender.send(message); } /** * 發(fā)送圖片郵件 * * @param to 收件郵箱地址 * @param subject 主題 * @param content 內(nèi)容 * @param rscPath 圖片路徑 * @param rscId 圖片ID */ public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId) { logger.info("發(fā)送圖片郵件開始:{},{},{},{},{}", to, subject, content, rscPath, rscId); MimeMessage message = this.mailSender.createMimeMessage(); MimeMessageHelper helper; try { helper = new MimeMessageHelper(message, true); helper.setTo(to); helper.setSubject(subject); helper.setText(content, true); FileSystemResource file = new FileSystemResource(new File(rscPath)); helper.addInline(rscId, file); helper.setFrom(from); this.mailSender.send(message); logger.info("發(fā)送圖片郵件成功!"); } catch (MessagingException ex) { logger.error("發(fā)送圖片郵件異常:{}", ex); } } }
4.編寫emailTemplate.html
郵件模版 你好,感謝您的注冊,這是一封驗證郵件,請點擊下面的鏈接完成注冊,感謝你你的支持!
激活賬號
5.編寫MailServiceTest類
package com.myimooc.boot.mail.mail.service; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.thymeleaf.TemplateEngine; import org.thymeleaf.context.Context; import static org.junit.Assert.*; /** *2-3 課程總結(jié)
* 標(biāo)題: 郵件服務(wù)測試
* 描述: 郵件服務(wù)測試
* 時間: 2018/09/08
* * @author zc */ @RunWith(SpringRunner.class) @SpringBootTest public class MailServiceTest { /** * 收件郵箱地址 */ private static final String TO = "zccodere@163.com"; @Autowired private MailService mailService; @Test public void sendSimpleMail() { this.mailService.sendSimpleMail(TO, "這是第一封郵件", "大家好,這是我的第一封郵件"); } @Test public void sendHtmlMail() throws Exception { StringBuilder content = new StringBuilder(128); content.append(""); content.append(" "); content.append("Hello World!這是一封Html郵件
"); content.append(" "); content.append(""); this.mailService.sendHtmlMail(TO, "這是一封html郵件", content.toString()); } @Test public void sendAttachmentsMail() throws Exception { String filePath = "d:48-boot-mail-hello.zip"; this.mailService.sendAttachmentsMail(TO, "這是一封帶附件的郵件", "這是一封帶附件的郵件內(nèi)容", new String[]{filePath}); } @Test public void sendInlineResourceMail() { String rscPath = "d: humb.jpg"; String rscId = "img001"; StringBuilder content = new StringBuilder(128); content.append(""); content.append(" "); content.append("這是有圖片的郵件
"); content.append(" "); content.append(" "); content.append(" "); content.append(""); this.mailService.sendInlineResourceMail(TO, "這是一封帶圖片的郵件", content.toString(), rscPath, rscId); } @Autowired private TemplateEngine templateEngine; @Test public void sendTemplateMail() throws Exception { Context context = new Context(); context.setVariable("id", "006"); String emailContent = this.templateEngine.process("emailTemplate", context); this.mailService.sendHtmlMail(TO, "這是一封模版郵件", emailContent); } }
常見錯誤
421 HL:ICC 該IP同時并發(fā)連接數(shù)過大
451 Requested mail action not token:too much fail... 登錄失敗次數(shù)過多,被臨時禁止登錄
553 authentication is required 認(rèn)證失敗
郵件系統(tǒng)
獨立微服務(wù)
異常處理
定時重試
異步郵件
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/77033.html
摘要:時間年月日星期三說明本文部分內(nèi)容均來自慕課網(wǎng)。用戶過生日,系統(tǒng)發(fā)送生日祝福郵件。將最新活動和優(yōu)惠以郵件的形式告知會員。通常把處理用戶請求郵件發(fā)送請求的郵件服務(wù)器稱為服務(wù)器。提供了加密的協(xié)議被稱為。 時間:2017年06月07日星期三說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:無個人學(xué)習(xí)源碼:https://github.com/zcc...
時間:2018年04月08日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 課程內(nèi)容 Spring Boot介紹 環(huán)境準(zhǔn)備 第一個Spring Boot項目 多模塊項目 打包和運行 1-2 框架定位 showImg(https...
摘要:慕課網(wǎng)消息中間件極速入門與實戰(zhàn)學(xué)習(xí)總結(jié)時間年月日星期三說明本文部分內(nèi)容均來自慕課網(wǎng)。 慕課網(wǎng)《RabbitMQ消息中間件極速入門與實戰(zhàn)》學(xué)習(xí)總結(jié) 時間:2018年09月05日星期三 說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:RabbitM...
摘要:慕課網(wǎng)流處理平臺學(xué)習(xí)總結(jié)時間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。 慕課網(wǎng)《Kafka流處理平臺》學(xué)習(xí)總結(jié) 時間:2018年09月09日星期日 說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):https://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 課程介紹 Kafk...
閱讀 3881·2021-10-08 10:05
閱讀 2968·2021-09-27 13:57
閱讀 2692·2019-08-29 11:32
閱讀 1016·2019-08-28 18:18
閱讀 1311·2019-08-28 18:05
閱讀 1996·2019-08-26 13:39
閱讀 874·2019-08-26 11:37
閱讀 2055·2019-08-26 10:37