热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

如何用Spring发送电子邮件

这篇文章主要介绍了如何用Spring发送电子邮件,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下

简介

Spring基于javax.mail封装了一套用于发送电子邮件的API,位于org.springframework.mail包下,下面将介绍下发送普通文本邮件和基于thymeleaf模版的邮件。

普通邮件

导入javax.mail依赖




 com.sun.mail
 javax.mail
 1.6.2

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邮箱发送邮件服务器
mail.host=smtp.qq.com
#QQ邮箱账户名
mail.username=xxxxxx@qq.com
#QQ邮箱授权码,开启IMAP/SMTP服务时会生成
mail.password=lrorsapyffcwbegg
#邮件发送编码
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();
		
		//发送带附件和内联元素的邮件需要将第二个参数设置为true
		MimeMessageHelper helper = new MimeMessageHelper(message, true);
		
		//发送方邮箱,和配置文件中的mail.username要一致
		helper.setFrom("xxxxxx@qq.com");
		
		//接收方
		helper.setTo("xxxxxx@qq.com");
		
		//主题
		helper.setSubject("邮件测试");
		
		//邮件内容
		helper.setText("", true);
		
		//邮件内容内嵌的图片,addInline中的contentId要和邮件内容中的cid相对应
		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模版的邮件

导入thymeleaf-spring依赖


 org.thymeleaf
 thymeleaf-spring4
 3.0.11.RELEASE

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



 
 
 
 
 
 

您好, xxx,感谢您使用XXX服务,您正在进行邮箱验证,本次请求的验证码为:

1111(为了保障您帐号的安全性,请在1小时内完成验证。)

XXX团队
2019年06月06日

测试

	@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发送电子邮件的详细内容,更多关于Spring发送电子邮件的资料请关注其它相关文章!


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本周信息安全小组主要进行了CTF竞赛相关技能的学习,包括HTML和CSS的基础知识、逆向工程的初步探索以及整数溢出漏洞的学习。此外,还掌握了Linux命令行操作及互联网工作原理的基本概念。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 导航栏样式练习:项目实例解析
    本文详细介绍了如何创建一个具有动态效果的导航栏,包括HTML、CSS和JavaScript代码的实现,并附有详细的说明和效果图。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
author-avatar
沫沫
微交易http://www.ikkwt.com/ 微交易平台http://www.ikkwt.com/pingtai/ 网络借贷平台大全http://www.kljie.com/ 小微金融http://www.lcbcn.com/ 微投资平台http://www.lcbcn.com/pt/ 网络借贷平台排行榜http://www.kljie.com/pingtai/
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有