如何用Spring發(fā)送電子郵件
簡(jiǎn)介
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í)會(huì)生成 mail.password=lrorsapyffcwbegg #郵件發(fā)送編碼 mail.encoding=UTF-8
測(cè)試
@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("郵件測(cè)試");
//郵件內(nèi)容
helper.setText("<html><body><img src='cid:myphoto'></body></html>", true);
//郵件內(nèi)容內(nèi)嵌的圖片,addInline中的contentId要和郵件內(nèi)容中的cid相對(duì)應(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)證,本次請(qǐng)求的驗(yàn)證碼為:
</p>
<p><span th:text="${validCode}">1111</span>(為了保障您帳號(hào)的安全性,請(qǐng)?jiān)?小時(shí)內(nèi)完成驗(yàn)證。)</p>
<p>
XXX團(tuán)隊(duì)<br />
2019年06月06日
</p>
</body>
</html>
測(cè)試
@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("郵件測(cè)試");
//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ā)送電子郵件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot整合JavaMail通過(guò)阿里云企業(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ā)送郵件過(guò)程解析
- Spring Boot Admin郵件警報(bào)整合過(guò)程解析
- SpringBoot發(fā)送郵件功能 驗(yàn)證碼5分鐘過(guò)期
- Springboot實(shí)現(xiàn)郵件發(fā)送功能
- SpringBoot實(shí)現(xiàn)發(fā)送郵件功能
相關(guān)文章
Java 格式化輸出JSON字符串的2種實(shí)現(xiàn)操作
這篇文章主要介紹了Java 格式化輸出JSON字符串的2種實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
在Mybatis中association標(biāo)簽多層嵌套的問(wèn)題
這篇文章主要介紹了在Mybatis中association標(biāo)簽多層嵌套的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot基于JAXB實(shí)現(xiàn)天地圖路徑規(guī)劃結(jié)果XML轉(zhuǎn)JSON
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何基于JAXB實(shí)現(xiàn)將天地圖路徑規(guī)劃結(jié)果XML轉(zhuǎn)JSON功能,文中的示例代碼講解詳細(xì),需要的可以了解下2025-02-02
Java模擬rank/over函數(shù)實(shí)現(xiàn)獲取分組排名的方法詳解
這篇文章主要為大家詳細(xì)介紹了Java模擬rank()、over()函數(shù)獲取分組排名的方法設(shè)計(jì)及實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04
微信公眾平臺(tái)開發(fā)實(shí)戰(zhàn)Java版之微信獲取用戶基本信息
這篇文章主要介紹了微信公眾平臺(tái)開發(fā)實(shí)戰(zhàn)Java版之微信獲取用戶基本信息 的相關(guān)資料,需要的朋友可以參考下2015-12-12

