如何用Spring發(fā)送電子郵件
簡介
Spring基于javax.mail封裝了一套用于發(fā)送電子郵件的API,位于org.springframework.mail包下,下面將介紹下發(fā)送普通文本郵件和基于thymeleaf模版的郵件。
普通郵件
導(dǎo)入javax.mail依賴
<!-- ...... --> <!-- 省略Spring依賴 --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.6.2</version> </dependency>
Spring配置類
@PropertySource(value="classpath:mail.properties") @Configuration public class SpringConfig { @Autowired Environment environment; /** * Spring郵件配置 */ @Bean public JavaMailSenderImpl javaMailSenderImpl(){ JavaMailSenderImpl javaMailSenderImpl = new JavaMailSenderImpl(); javaMailSenderImpl.setHost(environment.getProperty("mail.host")); javaMailSenderImpl.setUsername(environment.getProperty("mail.username")); javaMailSenderImpl.setPassword(environment.getProperty("mail.password")); javaMailSenderImpl.setDefaultEncoding(environment.getProperty("mail.encoding")); return javaMailSenderImpl; } }
郵件配置:mail.properties
#QQ郵箱發(fā)送郵件服務(wù)器 mail.host=smtp.qq.com #QQ郵箱賬戶名 mail.username=xxxxxx@qq.com #QQ郵箱授權(quán)碼,開啟IMAP/SMTP服務(wù)時(shí)會生成 mail.password=lrorsapyffcwbegg #郵件發(fā)送編碼 mail.encoding=UTF-8
測試
@RunWith(SpringRunner.class) @ContextConfiguration(classes=SpringConfig.class) public class MailTest { @Autowired private JavaMailSenderImpl javaMailSenderImpl; @Test public void testSimpleMail() throws MessagingException{ MimeMessage message = javaMailSenderImpl.createMimeMessage(); //發(fā)送帶附件和內(nèi)聯(lián)元素的郵件需要將第二個(gè)參數(shù)設(shè)置為true MimeMessageHelper helper = new MimeMessageHelper(message, true); //發(fā)送方郵箱,和配置文件中的mail.username要一致 helper.setFrom("xxxxxx@qq.com"); //接收方 helper.setTo("xxxxxx@qq.com"); //主題 helper.setSubject("郵件測試"); //郵件內(nèi)容 helper.setText("<html><body><img src='cid:myphoto'></body></html>", true); //郵件內(nèi)容內(nèi)嵌的圖片,addInline中的contentId要和郵件內(nèi)容中的cid相對應(yīng) FileSystemResource res = new FileSystemResource(new File("e:/yc/1.jpg")); helper.addInline("myphoto", res); //郵件附件 FileSystemResource file = new FileSystemResource(new File("e:/yc/myphoto.zip")); helper.addAttachment("myphoto.zip", file); javaMailSenderImpl.send(message); } }
基于thymeleaf模版的郵件
導(dǎo)入thymeleaf-spring依賴
<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring4</artifactId> <version>3.0.11.RELEASE</version> </dependency>
Spring配置類中添加thymeleaf模板配置
@Bean public TemplateEngine emailTemplateEngine() { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver(); templateResolver.setResolvablePatterns(Collections.singleton("*.html")); templateResolver.setPrefix("/templates/"); templateResolver.setSuffix(".html"); templateResolver.setTemplateMode(TemplateMode.HTML); templateResolver.setCharacterEncoding("UTF-8"); templateResolver.setCacheable(false); templateEngine.addTemplateResolver(templateResolver); return templateEngine; }
模版文件:/src/main/resources/templates/msg.html
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css">span{color:orange}</style> </head> <body> <p> 您好, <span th:text="${name}">xxx</span>,感謝您使用XXX服務(wù),您正在進(jìn)行郵箱驗(yàn)證,本次請求的驗(yàn)證碼為: </p> <p><span th:text="${validCode}">1111</span>(為了保障您帳號的安全性,請?jiān)?小時(shí)內(nèi)完成驗(yàn)證。)</p> <p> XXX團(tuán)隊(duì)<br /> 2019年06月06日 </p> </body> </html>
測試
@Autowired private TemplateEngine emailTemplateEngine; @Test public void testTemplateMail() throws MessagingException{ MimeMessage message = javaMailSenderImpl.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom("xxxxxx@qq.com"); helper.setTo("xxxxxx@qq.com"); helper.setSubject("郵件測試"); //thymeleaf模版解析成String Context ctx = new Context(); ctx.setVariable("name", "小姐姐"); ctx.setVariable("validCode", "88888888"); String htmlContent = emailTemplateEngine.process("msg.html", ctx); helper.setText(htmlContent, true); javaMailSenderImpl.send(message); }
以上就是如何用Spring發(fā)送電子郵件的詳細(xì)內(nèi)容,更多關(guān)于Spring發(fā)送電子郵件的資料請關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot整合JavaMail通過阿里云企業(yè)郵箱發(fā)送郵件的實(shí)現(xiàn)
- Spring發(fā)送郵件如何內(nèi)嵌圖片增加附件
- SpringBoot基礎(chǔ)教程之集成郵件服務(wù)
- springboot實(shí)現(xiàn)發(fā)送郵件(QQ郵箱為例)
- Spring Boot如何開啟并使用郵件服務(wù)
- 基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過程解析
- Spring Boot Admin郵件警報(bào)整合過程解析
- SpringBoot發(fā)送郵件功能 驗(yàn)證碼5分鐘過期
- Springboot實(shí)現(xiàn)郵件發(fā)送功能
- SpringBoot實(shí)現(xiàn)發(fā)送郵件功能
相關(guān)文章
Spring?IOC?xml方式進(jìn)行工廠Bean操作詳解
這篇文章主要介紹了Spring?IOC?xml方式進(jìn)行工廠Bean操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01如何解決Could not transfer artifact org.spri
在Maven更新過程中遇到“Could not transfer artifact org.springframework.boot”錯(cuò)誤通常是由于網(wǎng)絡(luò)問題,解決方法是在Maven的設(shè)置中忽略HTTPS,添加特定語句后,可以正常下載依賴,但下載速度可能較慢,這是一種常見的解決方案,希望對遇到相同問題的人有所幫助2024-09-09SpringCloud微服務(wù)續(xù)約實(shí)現(xiàn)源碼分析詳解
這篇文章主要介紹了SpringCloud微服務(wù)續(xù)約實(shí)現(xiàn)源碼分析,服務(wù)續(xù)期和服務(wù)注冊非常相似,服務(wù)注冊在Eureka?Client程序啟動(dòng)之后開啟,并同時(shí)開啟服務(wù)續(xù)期的定時(shí)任務(wù)2022-11-11解決SpringMVC、tomcat、Intellij idea、ajax中文亂碼問題
這篇文章主要介紹了解決SpringMVC、tomcat、Intellij idea、ajax中文亂碼問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09java錯(cuò)誤:無效的源發(fā)行版:18解決辦法圖文詳解
在Java開發(fā)中,如果你遇到錯(cuò)誤: 無效的源發(fā)行版,這通常意味著你正在使用的Java編譯器(通常是javac)被配置為編譯一個(gè)比你的JDK 版本更高,這篇文章主要給大家介紹了關(guān)于java錯(cuò)誤:無效的源發(fā)行版:18的解決辦法,需要的朋友可以參考下2024-08-08SpringBoot 實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解
這篇文章主要介紹了SpringBoot 實(shí)現(xiàn)定時(shí)任務(wù)的方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08