100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > SpringBoot 发送邮件功能(包含网易 QQ Gmail邮箱)

SpringBoot 发送邮件功能(包含网易 QQ Gmail邮箱)

时间:2023-10-16 07:22:06

相关推荐

SpringBoot 发送邮件功能(包含网易 QQ Gmail邮箱)

SpringBoot 2.x 集成网易邮箱、QQ邮箱、Gmail邮箱发送邮件

在Spring中提供了非常好用的 JavaMailSender接口实现邮件发送,因此引入依赖和进行编写不同配置即可实现。

所需依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>

一:网易邮箱配置

1.网易邮箱客户端授权码

参考官方帮助中心

2.客户端端口配置

可以使用465、994、25

25端口在阿里服务器上默认是禁用的,如需使用需要申请解封

3.详细配置

spring:mail:# 邮件服务地址host: # 端口 465/994/25port: 465# 编码格式default-encoding: utf-8# 用户名username: xxxxxx@# 协议protocol: smtp# 客户端授权码password: xxxxxx# 其它参数properties:mail:smtp:auth: true# 如果是用 SSL 方式,需要配置如下属性starttls:enable: truerequired: truessl:enable: true# 显示名称可任意设置display:sendmail: Southersendname: Spring Boot Test Email

4.特别说明

163邮箱SMTP服务器地址:,端口号:465或者994126邮箱SMTP服务器地址:,端口号:465或者994yeah邮箱SMTP服务器地址:,端口号:465或者994
二:QQ邮箱配置

1.官方配置说明

参考官方帮助中心

2.获取客户端授权码

参考官方帮助中心

3.详细配置

spring:mail:# 邮件服务地址host: # 端口 465/587port: 465# 编码格式default-encoding: utf-8# 用户名username: xxxxxx@# 协议protocol: smtp# 客户端授权码password: xxxxxx# 其它参数properties:mail:smtp:auth: true# 如果是用 SSL 方式,需要配置如下属性starttls:enable: truerequired: truessl:enable: true# 显示名称可任意设置display:sendmail: Southersendname: Spring Boot Test Email

4.特别说明

开启SSL时使用587端口时无法连接QQ邮件服务器

三:Gmail邮箱配置

1.客户端设置说明

参考官方Gmail帮助

2.客户端授权码说明

客户端授权码为Gmail账号的密码,必须使用使用SSL

3.详细配置

spring:mail:# 邮件服务地址host: # 端口 465 port: 465# 编码格式default-encoding: utf-8# 用户名username: xxxxxx@# 协议protocol: smtp# 客户端授权码(gmail账号的密码)password: xxxxxx# 其它参数properties:mail:smtp:auth: truestarttls:enable: truerequired: true# 这里必须开启sslssl:enable: true# 显示名称可任意设置display:sendmail: Southersendname: Spring Boot Test Email

四:通过JavaMailSender接口发送邮件
MailSendDto

public class MailSendDto {private String to;private String subject;private String content;public String getTo() {return to;}public void setTo(String to) {this.to = to;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}

2.MailService

/*** @description: 邮件服务Service* @author: Mr.Tang* @create: /1/21 10:06**/public interface MailService {/*** 发送普通邮件** @param dto*/void sendSimpleMailMessge(MailSendDto dto);/*** 发送普通邮件** @param to* @param subject* @param content*/void sendSimpleMailMessge(String to, String subject, String content);/*** 发送 HTML 邮件** @param to收件人* @param subject 主题* @param content 内容*/void sendMimeMessge(String to, String subject, String content);/*** 发送带附件的邮件** @param to 收件人* @param subject 主题* @param content 内容* @param filePath 附件路径*/void sendMimeMessge(String to, String subject, String content, String filePath);/*** 发送带静态文件的邮件** @param to 收件人* @param subject 主题* @param content 内容* @param rscIdMap 需要替换的静态文件*/void sendMimeMessge(String to, String subject, String content, Map<String, String> rscIdMap);}

3.MailServiceImpl

@Servicepublic class MailServiceImpl implements MailService {private static final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);@Autowiredprivate JavaMailSender mailSender;@AutowiredMallSystemMapper systemMapper;@Value("${spring.mail.username}")private String sender;@Overridepublic void sendSimpleMailMessge(MailSendDto dto) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(sender);message.setTo(dto.getTo());message.setSubject(dto.getSubject());message.setText(dto.getContent());try {mailSender.send(message);logger.info("send success.................");} catch (Exception e) {logger.error("发送简单邮件时发生异常!", e);}}@Overridepublic void sendSimpleMailMessge(String to, String subject, String content) {SimpleMailMessage message = new SimpleMailMessage();message.setFrom(sender);message.setTo(to);message.setSubject(subject);message.setText(content);try {mailSender.send(message);logger.info("send success.................");} catch (Exception e) {logger.error("发送简单邮件时发生异常!", e);}}@Overridepublic void sendMimeMessge(String to, String subject, String content) {MimeMessage message = mailSender.createMimeMessage();try {//true表示需要创建一个multipart messageMimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(sender);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);mailSender.send(message);logger.info("send success.................");} catch (MessagingException e) {logger.error("发送MimeMessge时发生异常!", e);}}@Overridepublic void sendMimeMessge(String to, String subject, String content, String filePath) {MimeMessage message = mailSender.createMimeMessage();try {//true表示需要创建一个multipart messageMimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(sender);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);FileSystemResource file = new FileSystemResource(new File(filePath));String fileName = file.getFilename();helper.addAttachment(fileName, file);mailSender.send(message);logger.info("send success.................");} catch (MessagingException e) {logger.error("发送带附件的MimeMessge时发生异常!", e);}}@Overridepublic void sendMimeMessge(String to, String subject, String content, Map<String, String> rscIdMap) {MimeMessage message = mailSender.createMimeMessage();try {//true表示需要创建一个multipart messageMimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(sender);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);for (Map.Entry<String, String> entry : rscIdMap.entrySet()) {FileSystemResource file = new FileSystemResource(new File(entry.getValue()));helper.addInline(entry.getKey(), file);}mailSender.send(message);logger.info("send success.................");} catch (MessagingException e) {logger.error("发送带静态文件的MimeMessge时发生异常!", e);}}}

五:效果图

普通邮件

HTML邮件

带附件邮件

带静态文件邮件

到这就结束了

如有错误欢迎指正。你有更好的解决方案或者建议欢迎一起交流讨论,如有疑问欢迎留言。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。