SpringBoot整合网易邮箱

SpringBoot整合邮箱

1,开启POP3/SMTP/IMAP服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RM24mKMp-1687834282584)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145621655.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbsfWxtY-1687834282584)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145706052.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lTV35iRU-1687834282585)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145500896.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-22nRoxPc-1687834282586)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145515444.png)]

注意:每个邮箱的密码唯一,不要随意分享给他人

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NDsWZAba-1687834282586)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627085851724.png)]

最后就是这个样子了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NvtM91Wa-1687834282587)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230626145554617.png)]

2,整合测试

2.1,pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w5.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.sin</groupId><artifactId>mail_massage</artifactId><version>0.0.1-SNAPSHOT</version><name>mail_massage</name><description>Demo project for Spring Boot</description><properties><java.version>8</java.version></properties><dependencies><!-- 短信业务 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.22.2</version><configuration><skipTests>true</skipTests></configuration></plugin></plugins></build>
</project>

2.2,application.yml

spring:mail:# 配置SMTP服务器地址host: smtp.126.com# 配置端口号465或者25port: 25# 发送者邮箱(根据自己邮箱填写)username: sin8023@126.com#  配置密码,注意是开启POP3/SMTP的授权密码(根据自己的授权密码填写)password: SZBSI****HNYAA*properties:mail:smtp:auth: trueenable: truessl:# 设为true时 端口号设为 465 设为false时 端口号设为25enable: falsesocketFactoryClass: javax.net.ssl.SSLSocketFactory#表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误debug: true# 邮箱编码格式default-encoding: UTF-8

2.3,MailService.java

package com.sin.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;/*** @CreateName SIN* @CreateDate 2023/06/27 8:50* @description*/
@Service
public class MailService {@Autowired(required = false)private JavaMailSender mailSender;@Value("${spring.mail.username")private String userName;/**** @param to 收件人* @param subject 邮箱标题* @param content 邮箱内容* @throws MessagingException*/public void sendMail(String to, String subject, String content) throws MessagingException {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);//邮箱发送者helper.setFrom(userName);//收件人,可以为多个收件人,收件人之间用逗号隔开helper.setTo(to);// 邮箱标题helper.setSubject(subject);// 邮箱内容helper.setText(content, true);mailSender.send(message);}
}

2.4,MailController.java

package com.sin.controller;import com.sin.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.mail.MessagingException;/*** @CreateName SIN* @CreateDate 2023/06/27 8:50* @description*/
@RestController
public class MailController {@Autowiredprivate MailService mailService;@GetMapping("/sendMail")public String sendMail() {try {mailService.sendMail("1824368699@qq.com", "测试邮箱", "使用SpringBoot整合邮箱发送消息");return "邮件发送成功";} catch (MessagingException e) {e.printStackTrace();return "邮件发送失败";}}}

2.5,测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zPKi72VN-1687834282587)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627090650640.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnOiQwib-1687834282588)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627091903490.png)]

2.6,查看结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3lps2nDY-1687834282588)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627085626640.png)]

3,发送附件

3.1,MailFileServier.java

package com.sin.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;/*** @CreateName SIN* @CreateDate 2023/06/27 10:03* @description*/
@Service
public class MailFileServier {@Autowired(required = false)private JavaMailSender mailSender;@Value("${spring.mail.username}")private String userName;/**** @param to 收件人* @param subject 邮箱标题* @param content 邮箱内容* @throws MessagingException*/public void sendMail(String to, String subject, String content, String imgName, File file) throws MessagingException {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);//邮箱发送者helper.setFrom(userName);//收件人,可以为多个收件人,收件人之间用逗号隔开helper.setTo(to);// 邮箱标题helper.setSubject(subject);// 邮箱内容helper.setText(content, true);helper.addAttachment(imgName,file);mailSender.send(message);}
}

3.2,MailFileController.java

package com.sin.controller;import com.sin.service.MailFileServier;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.mail.MessagingException;
import java.io.File;/*** @CreateName SIN* @CreateDate 2023/06/27 10:05* @description*/
@RestController
public class MailFileController {@Autowiredprivate MailFileServier mailFileServier;@GetMapping("/sendFile")public String sendMail() {try {mailFileServier.sendMail("1824368699@qq.com", "测试邮箱", "使用SpringBoot整合邮箱发送消息","sql作业.txt" ,new File("E:\\SQL默写.txt"));return "邮件发送成功";} catch (MessagingException e) {e.printStackTrace();return "邮件发送失败";}}
}

3.3,测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dhxq7k0b-1687834282589)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627101748001.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gT21Ei6u-1687834282589)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627101758792.png)]

4,发送图片

4.1,MailImgServier.java

package com.sin.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;/*** @CreateName SIN* @CreateDate 2023/06/27 10:21* @description*/
@Service
public class MailImgService {@Autowired(required = false)private JavaMailSender mailSender;@Value("${spring.mail.username}")private String userName;/**** @param to 收件人* @param subject 邮箱标题* @param content 邮箱内容* @throws MessagingException*/public void sendMail(String to, String subject, String content, String imgName, FileSystemResource file) throws MessagingException {MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper helper = new MimeMessageHelper(message, true);//邮箱发送者helper.setFrom(userName);//收件人,可以为多个收件人,收件人之间用逗号隔开helper.setTo(to);// 邮箱标题helper.setSubject(subject);// 邮箱内容helper.setText(content, true);helper.addInline(imgName,file);mailSender.send(message);}
}

4.2,MailImgController.java

package com.sin.controller;import com.sin.service.MailFileServier;
import com.sin.service.MailImgService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.mail.MessagingException;
import java.io.File;/*** @CreateName SIN* @CreateDate 2023/06/27 10:21* @description*/
@RestController
public class MailImgController {@Autowiredprivate MailImgService mailImgServier;@GetMapping("/sendImg")public String sendMail() {try {mailImgServier.sendMail("1824368699@qq.com", "测试邮箱","<h1>使用SpringBoot发送图片到邮箱</h1><p>图片:</p><img src='cid:img1'/>","img1" ,new FileSystemResource(new File("F:\\Users\\sin\\Pictures\\2.jpg")));return "邮件发送成功";} catch (MessagingException e) {e.printStackTrace();return "邮件发送失败";}}
}

4.3,测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VJ8ediqZ-1687834282589)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627100945258.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SY1WTNo5-1687834282590)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627103726435.png)]

5,随机验证码

5.1,导入thymeleaf模板

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Java提供的工具库 -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>5.9</version>
</dependency>

5.2,application.yml

## thymeleaf模板设置
spring:thymeleaf:prefix: classpath:/templates/suffix: .htmlmode: HTMLencoding: utf-8servlet.content-type: text/htmlcheck-template-location: true  #检查模板路径是否存在cache: false

5.3,RandomCodeUtil.java

package com.sin.util;import org.apache.commons.lang5.RandomStringUtils;/*** @CreateName SIN* @CreateDate 2023/06/27 9:26* @description 生成随机验证码* 使用了Apache Commons Lang库中的RandomStringUtils类来生成随机数字字符串。*/
public class RandomCodeUtil {public static String generateCode(int length){return RandomStringUtils.randomNumeric(length);}
}

5.4,EmailCodeService.java

package com.sin.service;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;/*** @CreateName SIN* @CreateDate 2023/06/27 9:29* @description*/
@Service
public class EmailCodeService {@Autowired(required = false)private JavaMailSender mailSender;@Value("${spring.mail.username}")private String userName;public void sendSimpleMessage(String to, String subject, String text) {SimpleMailMessage message = new SimpleMailMessage();//邮箱发送者message.setFrom(userName);//收件人,可以为多个收件人,收件人之间用逗号隔开message.setTo(to);// 邮箱标题message.setSubject(subject);// 邮箱内容message.setText(text);mailSender.send(message);}
}

5.5,EmailCodeController.java

package com.sin.controller;import com.sin.service.EmailCodeService;
import com.sin.util.RandomCodeUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** @CreateName SIN* @CreateDate 2023/06/27 9:30* @description*/
@Controller
public class EmailCodeController {@Autowiredprivate EmailCodeService emailCodeService;@GetMapping("/login")public String home(Model model) {// 生成6位随意验证码String code = RandomCodeUtil.generateCode(6);emailCodeService.sendSimpleMessage("1824368699@qq.com", "验证码", code);model.addAttribute("code", code);return "login.html";}}

5.6,测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f5SnqS5d-1687834282590)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627095443438.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8YWPyhNN-1687834282590)(D:\MavenObject\邮箱验证码\短信验证码.assets\image-20230627095423170.png)]

6,随机验证码登录

未完继续!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/3533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】解决php微擎中的goto加密解密,一键解密工具

今天&#xff0c;我将向大家揭秘一款神奇的工具——goto解密工具&#xff0c;轻松解密这个看似棘手的问题。 无数开发者都曾因为php中的goto功能而头疼不已。goto解密工具其中之一就是解密goto代码。通过精妙的算法和强大的解析能力&#xff0c;它能够解密被goto加密的代码段&…

Tune-A-Video:用于文本到视频生成的图像扩散模型的One-shot Tuning

Tune-A-Video: One-Shot Tuning of Image Diffusion Models for Text-to-Video Generation Project&#xff1a;https://tuneavideo.github.io 原文链接&#xff1a;Tnue-A-Video:用于文本到视频生成的图像扩散模型的One-shot Tuning &#xff08;by 小样本视觉与智能前沿&…

Redis基础认识

日升时奋斗&#xff0c;日落时自省 目录 1、Redis安装及配置 2、缓存简介 2.1、缓存优点 2.2、缓存分类 2.3、常见缓存使用 2.3.1、Spring Cache 2.3.2、Redis 3、Redis数据类型和使用 3.1、字符串类型 3.2、哈希类型 3.3、列表类型 3.4、集合类型 3.5、有序集合类…

基于 unity 配置 adb

1.打开环境变量配置path的环境 2 找到自己的unity安装目录,找到对应路径 配置到 path 属性中 C:\~\Editor\2021.3.0f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools 3 应用保存即可

42. 接雨水

题目链接&#xff1a;力扣 解题思路&#xff1a;从左往右按列进行计算&#xff0c;依次计算每一列能够接到的雨水数量。对于当前列能够接到的雨水数量是由左右两边最高的两根柱子决定的&#xff0c;类似于木桶定律&#xff08;一只水桶能装多少水取决于它最短的那块木板&#x…

TypeScript 中接口类型【Interfaces】的定义使用解读

导语&#xff1a; 什么是 类型接口&#xff1f; 在面向对象语言中&#xff0c;接口&#xff08;Interfaces&#xff09;是一个很重要的概念&#xff0c;它是对行为的抽象&#xff0c;而具体如何行动需要由类&#xff08;classes&#xff09;去实现&#xff08;implement&#x…

Redis的3大特殊数据类型(1)-BitMap

BitMap(位图/位数组)是Redis2.2.0版本中引入的一种新数据类型&#xff0c;该数据类型本质是一个仅含0和1的二进制字符串。因此可以把 Bitmap 想象成一个以位为单位的数组&#xff0c;数组的每个单元只能存储 0 和 1&#xff0c;数组的下标在 Bitmap 中叫做偏移量 offset&#x…

AI绘画Midjourney的咒语关键词汇总结

近期很多人都在研究Ai,被他强大的运算和准确性所震撼&#xff0c;和我们设计师相关的一个Ai绘画工具-Midjourney&#xff0c;绝对是占设计圈头部流量的&#xff0c;在圈内掀起一片热潮&#xff0c;今天我们就专门围绕他来展开说说&#xff0c;当然除了这个外&#xff0c;我们还…

使用 Jetpack Compose 构建 Switch

欢迎来到这篇关于如何使用 Jetpack Compose 构建 Switch&#xff08;开关&#xff09;的博客。Jetpack Compose 是 Google 的现代 UI 工具包&#xff0c;主要用于构建 Android 界面。它以声明式的方式简化了 UI 的开发。 一、什么是 Switch&#xff1f; 在 Android 中&#xf…

【PostgreSQL-16新特性之普通用户的保留连接个数(reserved_connections)】

PostgreSQL数据库为了保证在高并发&#xff0c;高连接数情况下某些用户能够正常连接到数据库里&#xff0c;设立了几个用户连接的保留个数。 本文介绍了PostgreSQL16版本前为超级用户保留的连接数&#xff08;superuser_reserved_connections&#xff09;以及PostgreSQL16版本…

EasyCVR播放设备录像出现部分视频不能播放的原因排查与解决

EasyCVR视频融合平台基于云边端协同架构&#xff0c;具有强大的数据接入、处理及分发能力。平台支持多协议接入&#xff0c;包括&#xff1a;国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、大华SDK、宇视SDK等&#xff0c;对外可分发多格式视频流&#xff0c;包括RTSP、…

GY56 红外测距传感器 (内附STM32、MSP432代码)

文章目录 一、GY56简介1. 概述2. 特点3. 参数4. 引脚说明5. 应用 二、通信协议1. 串口2. IIC协议 三、模块使用方法四、GY56 上位机五、STM32驱动代码六、MSP432驱动代码 一、GY56简介 1. 概述 GY-56 是一款低成本数字红外测距传感器模块。 工作电压 3-5v&#xff0c;功耗小&a…