如何用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')@Configurationpublic class SpringConfig {@AutowiredEnvironment environment;/** * Spring郵件配置 */@Beanpublic 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ù)時會生成mail.password=lrorsapyffcwbegg#郵件發(fā)送編碼mail.encoding=UTF-8測試
@RunWith(SpringRunner.class)@ContextConfiguration(classes=SpringConfig.class)public class MailTest {@Autowiredprivate JavaMailSenderImpl javaMailSenderImpl;@Testpublic void testSimpleMail() throws MessagingException{MimeMessage message = javaMailSenderImpl.createMimeMessage();//發(fā)送帶附件和內(nèi)聯(lián)元素的郵件需要將第二個參數(shù)設(shè)置為trueMimeMessageHelper 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);}}
<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)行郵箱驗證,本次請求的驗證碼為: </p> <p><span th:text='${validCode}'>1111</span>(為了保障您帳號的安全性,請在1小時內(nèi)完成驗證。)</p> <p> XXX團(tuán)隊<br /> 2019年06月06日 </p> </body></html>測試
@Autowiredprivate TemplateEngine emailTemplateEngine;@Testpublic 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模版解析成StringContext 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)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
