Spring Boot实现发QQ邮件

2024-08-31 05:44
文章标签 java 实现 spring boot qq 邮件

本文主要是介绍Spring Boot实现发QQ邮件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 ​

博客主页:     南来_北往

系列专栏:Spring Boot实战


引言

尽管电子邮件已不再是主流的沟通方式,但在职场中仍有不少人偏好使用邮件进行交流。这不仅仅是为了通信,更重要的是作为一种正式的工作记录,确保客户对自己曾经提出的要求和需求负责。

实战 

1、第一步添加依赖:

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

 2、第二进行yml配置:

spring:mail:#smtp服务器host: smtp.qq.com#发件人username: xxx@qq.com# 授权码password: xxxxx#QQ端口号465或587port: 587default-encoding: UTF-8properties:timeout: 5000connection-timeout: 5000write-timeout: 5000mail:smtp:socketFactoryClass: javax.net.ssl.SSLSocketFactory#开启调试debug: true

 3、第三步实现右键接口类:

JavaMailSender javaMailSender

4、第四步进行发送接口: 

void send(MimeMessage mimeMessage)

 5、第五进行拼接MimeMessage:

MimeMessageHelper messageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true);
//发件人
messageHelper.setFrom(new InternetAddress(name + "<" + form + ">"));
//收件人
messageHelper.setTo(to.split(","));
//主题
messageHelper.setSubject(subject);
//内容
messageHelper.setText(content, isHtml);
//抄送
if (!StringUtils.isEmpty(cc)) {messageHelper.setCc(cc.split(","));
}
//密送
if (!StringUtils.isEmpty(bcc)) {messageHelper.setCc(bcc.split(","));
}
//附件
if (CollectionUtil.isNotEmpty(files)) {for (File file : files) {messageHelper.addAttachment(file.getName(), file);}
}
// 发送时间
messageHelper.setSentDate(new Date());

6、第六最后messageHelper可以获取MimeMessage:

messageHelper.getMimeMessage()

邮件设置

首先打开QQ邮箱点击设置:

 

在账号模块下找到POP3服务来进行打开:

 

然后需要绑定手机号,按照提示,使用手机给一个账号发短信,然后绑定手机,接着就会得到下面这个授权码: 

 

把这一串授权码填入yml的spring.mail.password。 

准备好一切后: 

emailService.sendText("xxx@qq.com","xxxx@qq.com","你好,我是你的朋友","你好,我是你的朋友,我来自加拿大,能和你交个朋友吗?");

 可以看到邮件已经发送出去了。

完整代码

package com.xy.service.impl;import cn.hutool.core.collection.CollectionUtil;
import com.xy.service.IEmailService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;import javax.mail.internet.InternetAddress;
import java.io.File;
import java.util.Date;
import java.util.List;@Slf4j
@Service
public class EmailServiceImpl implements IEmailService {@Autowiredprivate JavaMailSender javaMailSender;private void send(String form, String to, String subject, String content, Boolean isHtml, String cc, String bcc, List<File> files) {try {MimeMessageHelper messageHelper = new MimeMessageHelper(javaMailSender.createMimeMessage(), true);//发件人messageHelper.setFrom(from);//收件人messageHelper.setTo(to.split(","));//主题messageHelper.setSubject(subject);//内容messageHelper.setText(content, isHtml);//抄送if (!StringUtils.isEmpty(cc)) {messageHelper.setCc(cc.split(","));}//密送if (!StringUtils.isEmpty(bcc)) {messageHelper.setCc(bcc.split(","));}//附件if (CollectionUtil.isNotEmpty(files)) {for (File file : files) {messageHelper.addAttachment(file.getName(), file);}}// 发送时间messageHelper.setSentDate(new Date());//正式发送邮件javaMailSender.send(messageHelper.getMimeMessage());} catch (Exception e) {throw new RuntimeException("邮件发送失败", e);}}@Overridepublic void sendText(String form, String to, String subject, String content) {this.send(form, to, subject, content, false, null, null, null);}@Overridepublic void sendHtml(String form, String to, String subject, String content) {this.send( form, to, subject, content, true, null, null, null);}}

 关于发件人名称重新取名,可以用下面这个方法:

messageHelper.setFrom(new InternetAddress("imufather"+ "<" + form + ">"));

但是中文可能会乱码。

 

这篇关于Spring Boot实现发QQ邮件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123056

相关文章

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

在Java中将XLS转换为XLSX的实现方案

《在Java中将XLS转换为XLSX的实现方案》在本文中,我们将探讨传统ExcelXLS格式与现代XLSX格式的结构差异,并为Java开发者提供转换方案,通过了解底层原理、性能优势及实用工具,您将掌握... 目录为什么升级XLS到XLSX值得投入?实际转换过程解析推荐技术方案对比Apache POI实现编程

Java调用C#动态库的三种方法详解

《Java调用C#动态库的三种方法详解》在这个多语言编程的时代,Java和C#就像两位才华横溢的舞者,各自在不同的舞台上展现着独特的魅力,然而,当它们携手合作时,又会碰撞出怎样绚丽的火花呢?今天,我们... 目录方法1:C++/CLI搭建桥梁——Java ↔ C# 的“翻译官”步骤1:创建C#类库(.NET

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

Java Lambda表达式的使用详解

《JavaLambda表达式的使用详解》:本文主要介绍JavaLambda表达式的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言二、Lambda表达式概述1. 什么是Lambda表达式?三、Lambda表达式的语法规则1. 无参数的Lambda表

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

Spring Boot 整合 Apache Flink 的详细过程

《SpringBoot整合ApacheFlink的详细过程》ApacheFlink是一个高性能的分布式流处理框架,而SpringBoot提供了快速构建企业级应用的能力,下面给大家介绍Spri... 目录Spring Boot 整合 Apache Flink 教程一、背景与目标二、环境准备三、创建项目 & 添

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解