SpringBoot 学习记录(九): Email

自己的电脑做SMTP服务器,不求别人的好方法 作者:admin  来源:www.zhshji.cn  发布时间:2008-1-9 16:37:13 <!-- var newasp_fontsize=9; var newasp_lineheight=12; / 阅读详情

一,先引入相关依赖包

<!-- email -->
<dependency> 
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二,在application.properties中配置发送邮件需要的相关属性
# 设置邮箱主机
spring.mail.host=smtp.qq.com
# 设置用户名
spring.mail.username=8*******8@qq.com
# 设置密码
spring.mail.password=mwpjxevxxxxxbcic
# 关闭认证
spring.mail.properties.mail.smtp.auth=false
# 对纯文本通信协议的扩展,它提供一种方式将纯文本链接升级为加密链接(TLS或SSL),而不是另外使用一个端口作加密通信。
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

注意:选择用来发送邮件的服务邮箱先申请开通POP3/SMTP服务

申请开通后会得到一个授权码,用这个授权码作为上面需要填写的密码。

如果没有申请授权,发送邮件会报错:Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 503 Error: need EHLO and AUTH first !

这里以QQ邮箱为例,如何获取授权码,请跳转这里查看:什么是授权码,它又是如何设置?

申请成功后会跳出如下界面,得到授权码:


三,新建测试类MailController
package com.example.controller;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;

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.ui.freemarker.FreeMarkerTemplateUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.base.ReturnResult;
import com.example.constant.ReturnConstant;

import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateNotFoundException;

/**
 * 发送邮件
 * @author Administrator
 *
 */

@RestController
@RequestMapping("/mail")
public class MailController {
	
	/**
	 * 引入依赖包后sping_boot会在启动的时候自动实例化JavaMailSender对象
	 * 这里直接引入使用即可
	 */
	@Resource
	private JavaMailSender mailSender;

	/**
	 * 发送一封普通文本邮件
	 * @return
	 */
	@RequestMapping("/send/1")
	public ReturnResult setMail1(){
		SimpleMailMessage message = new SimpleMailMessage();
		message.setSubject("我的第一封文本邮件");
		message.setText("Hello World!");
		message.setTo("8*******8@qq.com");
		message.setFrom("8*******8@qq.com");

		mailSender.send(message);
		
		ReturnResult r = new ReturnResult();
		r.setStatus(ReturnConstant.RETURN_OK);
		r.setMsg("send success");
		return r;
	}
	
	/**
	 * 发送一封带有附件的邮件
	 * @return
	 * @throws MessagingException 
	 */
	@RequestMapping("/send/2")
	public ReturnResult setMail2() throws MessagingException{
		MimeMessage mimeMessage =  mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
		
		helper.setSubject("我的第一封带有附件的邮件");
		helper.setText("Hello World!");
		helper.setTo("8*******8@qq.com");
		helper.setFrom("8*******8@qq.com");
		
		//附件.
	    	FileSystemResource file = new FileSystemResource(
	    		new File("C:/Users/Administrator/Desktop/demo1.png"));
	    	helper.addAttachment("demo1.png", file);
	    
	    	mailSender.send(mimeMessage);
	    
		ReturnResult r = new ReturnResult();
		r.setStatus(ReturnConstant.RETURN_OK);
		r.setMsg("send success");
		return r;
	}
	
	/**
	 * 发送一封模板邮件
	 * @return
	 * @throws MessagingException 
	 * @throws IOException 
	 * @throws ParseException 
	 * @throws MalformedTemplateNameException 
	 * @throws TemplateNotFoundException 
	 * @throws TemplateException 
	 */
	@RequestMapping("/send/3")
	public ReturnResult setMail3() throws MessagingException, TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException{
		MimeMessage mimeMessage =  mailSender.createMimeMessage();
		MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
		
		helper.setSubject("我的第一封模板邮件");
		helper.setTo("8*******8@qq.com");
		helper.setFrom("8*******8@qq.com");
		
		Map<String, Object> model = new HashMap<String, Object>();
        	model.put("username", "World");
		
       		Configuration cfg = new Configuration(Configuration.VERSION_2_3_23);  
        	// 设定去哪里读取相应的ftl模板  
        	cfg.setClassForTemplateLoading(this.getClass(), "/templates");  
        	// 在模板文件目录中寻找名称为name的模板文件  
        	Template template   = cfg.getTemplate("email.ftl");
       
        	String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
        	helper.setText(html, true);
 
        	mailSender.send(mimeMessage);
		
		ReturnResult r = new ReturnResult();
		r.setStatus(ReturnConstant.RETURN_OK);
		r.setMsg("send success");
		return r;
	}
}

==== 这里为了方便测试,建议发件人跟收件人都设置成自己的邮箱

这里有用到freemarker发送模板邮件,具体使用步骤如下:

1,引入freemarker依赖包:

<!-- 引入模板引擎,用于发送模板邮件 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2,在application.properties中添加freemarker配置:

#freemarker
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false

3,在resource/templates目录下新建email.ftl

<html> 
<body> 
    <h3>Hello, ${username}, Nice to meet you!</h3>
</body> 
</html>
启动测试:

============================================================================================================

邮件全部发送成功,下篇我们来学习,也是这个系列的最后一篇:SpringBoot 学习记录(十): scheduler



Springboot中使用mail邮件 对于复杂消息,我们可以编辑html消息模板,以及实现动态解析的功能。另外还能够携带多附件。对于以上的内容,我们需要来把它整合成一个工具来使用。这里使用的是QQ邮箱,进入设置-账户,开启下服务。开启后获取授权码,保存自己客户端授权码。以上配置好了,我们可以写一些demo。 阅读详情

相关推荐

SpringBoot整合Email 邮件发送

在开发中,经常会碰到email邮件发送的场景 如发送验证码,向客户发送邮件等等。 今天,本项目将讲解通过Springboot 发送email 邮件 普通文本邮件 ,HTML内容板式邮件 ,包含静态资源邮件,以及带附件邮件。

胖虎儿的博客 5万+

【Spring Boot】(31)、使用SpringBoot发送mail邮件

1、前言 发送邮件应该是网站的必备拓展功能之一,注册验证,忘记密码或者是给用户发送营销信息。正常我们会用JavaMail相关api来写发送邮件的相关代码,但现在springboot提供了一套更简易使用的封装。   2、Mail依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; ...

caychen的博客 6万+

SpringBoot整合Email 邮件发送详解

通过上述步骤,我们成功在SpringBoot项目中整合了Email服务,实现了普通邮件、HTML邮件、含静态资源邮件以及带附件邮件的发送。这不仅提升了应用的功能性,也增强了与用户的互动。希望本文能够帮助到需要在项目中集成邮件服务的开发者。版权声明:本博客内容为原创,转载请保留原文链接及作者信息。参考文章SpringBoot整合Email 邮件发送-优快云博客SpringBoot整合邮箱发送邮件 - 博客园。

web15185420056的博客 1903

Spring Boot 发送邮件

一. No Auth User 1. Pom.xml 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId&gt...

tina_tian1的博客 403

SpringBoot集成邮件发送——oh-my-email

SpringBoot集成邮件发送,选取oh-my-email这个库。 GitHub链接:https://github.com/biezhi/oh-my-email GitHub上有作者的详细步骤,很详细,跟着步骤走,就能实现功能。 这里做一下笔记记录。 1.新建项目 新建SpringBoot项目 添加maven依赖 <!--添加on my email 依赖--> <dependency> <groupId>io.github.biezhi</groupId&g

qq_43685040的博客 2627

springboot 邮件

一 首先是pom依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-mail&lt;/artifactId&gt; &lt;/depe...

sdzhangshulong的博客 1214

SpringBoot3整合Email

本次就是利用springboot3整合的mail依赖集成邮件功能,实现对各种类型的邮件发送。还通过redis缓存验证码实现一个邮箱验证验证码功能。最后的最后,新人报道欢迎大佬们指正,需要源码的私信。

cy202101的博客 1564

毫米波雷达之CFAR 目标检测

恒虚警率(CFAR)算法是一种广泛应用于雷达目标检测的算法,其主要目 标是减少由于杂波与回波之间强度不对称而引起的误报,以确保相对恒定的虚警 率。如图 3.4(a)所示,表示由距离单元组成的一维数据。在待测单元 D 周围选 择若干个背景杂波功率的蓝色单元构成参考滑窗,称为参考单元;而待测单元 D 相邻的若干个不用于背景估计的单元则称为保护单元。当参考单元和保护单元的 维度从一维扩展到二维时,相应的 CFAR 检测由一维 CFAR 演变为二维 CFAR 以处理参考窗口,如图 3.4 (b)所示。

m0_56120826的博客 4921

五.SpringBoot集成实例系列-邮件email文章列表

文章列表 本系列将通过实例分别实现Springboot集成mybatis(mysql),mail,mongodb,cassandra,scheduler,redis,kafka,shiro,websocket。 具体文章系列如下: 一.SpringBoot集成实例系列-xml型单数据源mybatis 二.SpringBoot集成实例系列-xml型多数据源mybatis 三.SpringBoot集成实例系列-注解型单数据源mybatis 四.SpringBoot集成实例系列-注解型多数据源mybatis 五

if(true){ I love it } 3707

ICT模拟零件测试方法--电容测试

通常,小到 100 pF 的电容需要补偿,因为夹具和系统的电容(20 到 50 pF)相对于被测设备的值是显著的。软件在需要补偿的电容测试中加入 comp 选项,而在不需要补偿的电容测试中加入 nocomp 选项。在调试期间,通过向电容语句添加 pc 选项验证您的电容测试。在测试单独的电容时,从测量结果中减去学到的值,然后与测试限制进行比较以决定通过或失败。请注意,如果用于需要补偿的电容测试上的感应总线使用了单独的探针,测量将无效。在测试电容时,应注意两个方面:电容的电阻元件,以及夹具和系统本身的电容。

可可南木的博客 1217

nrf52840的uart0与uart1双串口使用

nrf52840的uart0与uart1双串口使用 项目原使用nrf52832,后面由于项目需要用到双串口,改用nrf52840,官方的例程没看到使用uart1的,找遍全网都没找到uart1的使用资料,有些不负责任的网文居然说40也只有一个uart,吓得俺赶紧又查看了一次datesheet,O得K、木鸭梨 SDK代码uart驱动中,搜索到uart1的驱动部分,说明官方驱动有uart1支持的 自己动手,丰衣足食吧,下面以nRF5_SDK_17.0.0_9d13099版本,在examples\ble_per

chhen168的博客 5625

SpringBoot实现发送Email邮件

君子坐而论道,少年起而行之 success前提环境实现实体类email通用类配置MailProperties类配置方式一:配置方式二:测试请求效果图 前提    写一篇简单的邮件发送功能。 环境    1.SpringBoot1.5.x    2.JDK8    3.Maven    4.Lombok插件    5.email依赖

qq_42618394的博客 2243

VirtualBox安装Win10虚拟机超详细教程(附微软官方镜像下载)

本文提供了一份详细的VirtualBox安装Win10虚拟机教程,涵盖从环境准备、工具下载到系统安装与初始配置的全过程。特别推荐使用微软官方镜像下载,确保系统纯净安全。此外,还分享了性能优化技巧和常见问题解决方案,帮助用户高效搭建稳定的Windows测试环境。

weixin_29243279的博客 918

SpringBoot集成EMail

SpringBoot集成EMail 在大部分项目中,我们都会经常有用到邮件工具;不管是邮件验证码、邮件注册校验、预警通知等服务,都会使用到我们的email来发送邮件。下面我们就来教大家如何使用SpringBoot中使用email来发送邮件: 登录需要做完发送邮件的账户,我这边用的是网易邮箱,所以就登录到网易的163邮箱就行,其他邮箱的账户登录到自己所在邮箱网站即可。 找到设置==>客户端设置(不同邮箱名字不同,163邮箱则是POP3/SMTP/IMAP),就会看到以下页面,开启需要使用的服务即可,我

Small ink的博客 6877

麒麟系统下PaddleOCR的离线部署实战:从环境搭建到模型优化

本文详细介绍了在国产麒麟操作系统上离线部署百度PaddleOCR的完整实战流程。从系统环境准备、Conda虚拟环境搭建,到PaddlePaddle框架和PaddleOCR的离线安装,再到预训练模型的本地部署与优化技巧,提供了全面的文字识别解决方案。重点解决了离线环境下依赖包管理、模型量化加速等核心问题,并附带了批量处理与内存监控的进阶代码,适用于对数据安全有严格要求的政务、金融等场景。

docker7nomad的博客 963

RK3588芯片CAN总线调试秘籍:SocketCAN与错误帧攻略

RK3588芯片在嵌入式领域凭借8nm工艺和强大性能成为核心控制器。本文详细介绍了其CAN总线配置流程,包括硬件连接、内核驱动配置及SocketCAN命令操作,并深入解析了CAN通信中的错误帧机制及分析方法。通过智能工厂案例,展示了从问题定位到解决方案的全过程,强调了稳定通信对工业应用的重要性。文章为RK3588的CAN总线应用提供了实用技术参考,并对未来智能诊断技术在该领域的应用进行了展望。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 515

java email怎么设置端口号_SpringBoot配置Email发送功能实例

本篇介绍在SpringBoot中配置Email服务的具体步骤,以及常见的异常分析。具体案例以QQ邮箱以及QQ企业邮箱为例。QQ邮箱发送方式QQ企业邮箱发送方式总结tips:下面提到的hashIndex指的是一个元素put到hashmap中时,要根据其key.hashcode & (table.size()-1)来决定其在table中的位置。table是一个数组,类型为Node。Node是h...

weixin_30010987的博客 1286

10|Git Diff 与增量代码识别:本次到底改了哪些代码?

本文介绍 Git Diff 和增量代码识别,帮助你理解精准测试如何先找到本次真正变化的代码。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 160

SpringBoot配置Email发送功能

SpringBoot配置Email发送功能本篇介绍在SpringBoot中配置Email服务的具体步骤,以及常见的异常分析。 具体案例以QQ邮箱以及QQ企业邮箱为例。 QQ邮箱发送方式 QQ企业邮箱发送方式 总结 tips: 下面提到的hashIndex指的是一个元素put到hashmap中时,要根据其key.hashcode & (table.size()-1)来决定

1万+

C# 上位机之海康工业相机开发(SDK)实战教程

海康工业相机的C#开发核心是基于MVS SDK的“初始化→枚举→连接→采集→释放”流程,其中图像回调处理和格式转换是关键。严格按照SDK文档处理设备类型(网口/USB)和像素格式;及时释放图像资源,避免内存泄漏;错误码是排查问题的重要依据(可参考SDK中的“错误码说明”文档)。掌握这些基础后,可结合机器视觉算法(如OpenCV)实现缺陷检测、尺寸测量等高级功能,构建完整的工业视觉系统。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 3830

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SpringBoot集成Email发送功能

SpringBoot集成Email发送功能 1.修改pom.xml文件 增加spring-boot-starter-mail <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifac...

小代码大作家 898

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: SpringBoot 学习记录(八): properties 属性自定义
下一篇: SpringBoot 学习记录(十): scheduler
小小小爬虫
博客等级 码龄10年 16粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值