使用JAVA实现邮件发送功能

article/2025/9/14 4:11:05

一、准备工作

小编今天以 QQ邮箱 进行演示操作。

想要使用代码操作邮箱发送邮件,需要在邮箱设置中申请开通 POP3/SMTP 服务。
接下来跟着小编的图文一步一步的操作开通吧!

1.1 登录网页QQ邮箱,点击页面顶部设置按钮。

设置按钮

1.2 点击后会打开邮箱设置页面,如下所示,点击第二栏账户

点击账户

1.3 点击后往下拉,直到有如下页面选项。

开启服务

选择POP3/SMTP服务,点击后面的开启,此时会让你使用绑定邮箱的手机号发送短信。

发送短信
发送完成后点击 我已发送 按钮,进行验证。

1.4 验证完成后会显示授权码(复制下来,一会要用)

授权码

到此,准备工作已完成!

二、项目中配置邮件发送功能

2.1 引入发送邮件相关依赖
<!--邮件发送依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>
</dependency>

引入后,更新maven,下载相关依赖
更新依赖

2.2 在application.yml文件中添加邮件基本配置

spring: # 发送邮件配置mail:host: smtp.qq.com # 配置 smtp 服务器地址port: 587 # smtp 服务器的端口username: 1354720889@qq.com # 配置邮箱用户名(你的邮箱地址)password: batrgddaqykegfss # 配置申请到的授权码(刚让复制的授权码)default-encoding: UTF-8 # 配置邮件编码properties:mail:smtp:socketFactoryClass: javax.net.ssl.SSLSocketFactory # 配饰 SSL 加密工厂debug: truefrom: 1354720889@qq.com # 发送方邮件,配在yml中可方便更改

2.3 为了方便使用,新建一个操作email的工具类(EmailUtil.java)

封装邮件工具类是为了方便后续调用操作。

package com.clover.utils;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.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;/*** @ClassName EmailUtil* @Description 邮件发送工具* @Author Sophia* @Date 2022/4/6 16:06*/
@Component
public class EmailUtil {@Value("${spring.mail.from}") // 从application.yml配置文件中获取private String from; // 发送发邮箱地址@Autowiredprivate JavaMailSender mailSender;/*** 发送纯文本邮件信息** @param to      接收方* @param subject 邮件主题* @param content 邮件内容(发送内容)*/public void sendMessage(String to, String subject, String content) {// 创建一个邮件对象SimpleMailMessage msg = new SimpleMailMessage();msg.setFrom(from); // 设置发送发msg.setTo(to); // 设置接收方msg.setSubject(subject); // 设置邮件主题msg.setText(content); // 设置邮件内容// 发送邮件mailSender.send(msg);}/*** 发送带附件的邮件信息** @param to      接收方* @param subject 邮件主题* @param content 邮件内容(发送内容)* @param files 文件数组 // 可发送多个附件*/public void sendMessageCarryFiles(String to, String subject, String content, File[] files) {MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);helper.setFrom(from); // 设置发送发helper.setTo(to); // 设置接收方helper.setSubject(subject); // 设置邮件主题helper.setText(content); // 设置邮件内容if (files != null && files.length > 0) { // 添加附件(多个)for (File file : files) {helper.addAttachment(file.getName(), file);}}} catch (MessagingException e) {e.printStackTrace();}// 发送邮件mailSender.send(mimeMessage);}
/*** 发送带附件的邮件信息** @param to      接收方* @param subject 邮件主题* @param content 邮件内容(发送内容)* @param file 单个文件*/public void sendMessageCarryFile(String to, String subject, String content, File file) {MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);helper.setFrom(from); // 设置发送发helper.setTo(to); // 设置接收方helper.setSubject(subject); // 设置邮件主题helper.setText(content); // 设置邮件内容helper.addAttachment(file.getName(), file); // 单个附件} catch (MessagingException e) {e.printStackTrace();}// 发送邮件mailSender.send(mimeMessage);}public String getFrom() {return from;}public void setFrom(String from) {this.from = from;}
}

2.4 测试邮件发送功能

我使用的SpringBoot项目,因此我在测试类中进行测试。
测试类代码:

package com.clover.api.blogapi;import com.clover.utils.EmailUtil;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.io.File;@SpringBootTest
class BlogApiApplicationTests {@Autowiredprivate EmailUtil emailUtil;@Testvoid contextLoads() {}@Testvoid sendStringEmail() {// 测试文本邮件发送(无附件)String to = "135472099@qq.com"; // 这是个假邮箱,写成你自己的邮箱地址就可以String title = "文本邮件发送测试";String content = "文本邮件发送测试";emailUtil.sendMessage(to, title, content);}@Testvoid sendFileEmail() {// 测试单个附件邮件发送String to = "135472099@qq.com"; // 这是个假邮箱,写成你自己的邮箱地址就可以String title = "单个附件邮件发送测试";String content = "单个附件邮件发送测试";File file = new File("D:\\GCH\\Typora\\Linux中常用的查看系统相关信息命令.md");emailUtil.sendMessageCarryFile(to, title, content, file);}@Testvoid sendFilesEmail() {// 测试多个附件邮件发送String to = "135472099@qq.com"; // 这是个假邮箱,写成你自己的邮箱地址就可以String title = "多个附件邮件发送测试";String content = "多个附件邮件发送测试";File[] files = new File[2];files[0] = new File("C:\\Users\\root\\Desktop\\配置邮箱\\1.png");files[1] = new File("C:\\Users\\root\\Desktop\\配置邮箱\\2.png");emailUtil.sendMessageCarryFile(to, title, content, files);}}

2.5 测试结果

邮箱已收到
已收到

2.5.1 文本邮件发送

文本邮件发送

2.5.2 单个附件邮件发送

单个附件邮件发送

2.5.3 多个附件邮件发送

多个附件邮件发送

到此,使用Java发送邮件功能就结束了,伙伴们可以根据自己的需求进行封装使用。当然,如果觉得小编的教程还不错,可以给小编关注留言鼓励呢!


http://chatgpt.dhexx.cn/article/xADumnNO.shtml

相关文章

java发送qq邮件

1.登录qq邮箱 1&#xff09;点击设置 2&#xff09;点击账户 3&#xff09;开启第一个服务&#xff0c;我已经开过了 4&#xff09;开启验证&#xff08;让你发送指定内容到某个号码&#xff09;&#xff0c;完成后点击我已发送&#xff0c;就会出现授权码&#xff0c;授权码很…

java实现邮件发送

一.第一步:导入两个jar包。 activation.jar 和 mail.jar, 一定要添加到构建路径(不然找不到包) 两个用于Java发送邮件的jar包-Java文档类资源-CSDN下载 二、创建邮箱工具类:Mail.java import java.util.*; import java.io.*; import javax.mail.*; import javax.m…

Java(81):Java发邮件简单示例

Java Email jar包下载地址&#xff1a;JavaMail API https://www.oracle.com/java/technologies/javamail.html JavaMail 右侧下载&#xff0c;选择jar包下载 API文档参考&#xff1a;JavaMail API documentation https://javaee.github.io/javamail/docs/api/ 或直接引用…

java发送qq邮件_「java发邮件」Java 通过SMTP实现发送QQ邮件 - seo实验室

java发邮件 在Eclipse中创建项目&#xff0c;并把javax.amil.jar和commons-email-1.5,jar复制到项目中 链接&#xff1a;https://pan.baidu.com/s/1sQjA1GEpKi6IJJRGHKxjeA 密码&#xff1a;4ene 添加步骤&#xff1a; 1.首先在项目下创建一个文件夹&#xff0c;保存我们的jar包…

Java发邮件配置-hutool+腾讯企业邮箱

1、技术选型 1.1、hutool工具 1.2、javax.mail 1.3、腾讯企业邮箱2、环境准备 2.1、pom <!--javax.mail--><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependen…

Java(83)Java发邮件简单工具类

1、Maven引用 <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --><dependency><groupId>javax.mail</groupId><artifactId>javax.mail-api</artifactId><version>1.6.2</version></dependency><…

java发邮件 动态切换当前发送人

最近项目需要实现一个发送邮件功能&#xff0c;踩了一些坑&#xff0c;最终实现了。 在此写一下心得 开始做的时候一塌糊涂&#xff0c;觉得挺难的&#xff0c;但是做完之后发现其实简单的一批&#xff0c;接下来我就来写一下实现流程。 1、准备好拿来发送邮件的账号&#xf…

Java 发邮件-带附件且正文html格式

入职新公司不久&#xff0c;接到一个给用户发邮件的需求&#xff0c;有两点需要说明的&#xff1a;1&#xff09;正文需要格式化&#xff1b;2&#xff09;需要带附件。 大概了解了一下需求&#xff0c;我马上开始思考&#xff0c;现有项目中是否有类似的接口可以支持&#xf…

java实现发送邮件

本文介绍下java实现邮件的发送&#xff0c;意在网站用户评论时能够及时通知站长和用户评论被回复后能够及时通知用户。 下文介绍下具体实现。 java实现 首先引入springboot的邮箱依赖 <dependency><groupId>org.springframework.boot</groupId><artif…

java邮件发送

一、JavaMail介绍 1、概述 JavaMail是利用现有的邮件账户发送邮件的工具&#xff0c;比如我在网易注册一个邮箱账户&#xff0c;通过JavaMail的操控&#xff0c;我可以不亲自登录网易邮箱&#xff0c;让程序自动的使用网易邮箱发送邮件。这一机制被广泛的用在注册激活和垃圾邮…

使用Java实现邮件的发送

数年前&#xff0c;邮件的发送是经过人为的运输&#xff0c;从发件人---当地邮局---收件地邮局---收件人&#xff0c;付出的人力物力是非常大的。随着时代的进步&#xff0c;科技的发展&#xff0c;如今我们的生活中出现更高级发送邮件的方式&#xff0c;最常用的就是从&#x…

Java发送邮件详解

目录 一、关于电子邮件 电子邮件 传输协议 SMTP协议 POP3协议 邮件收发原理 二、发送纯文本邮件 二、发送带图片和附件的邮件 一、关于电子邮件 电子邮件 要在网络上实现邮件功能&#xff0c;必须要有专门的邮件服务器。 这些邮件服务器类似于现实生活中的邮局&…

基于JavaMail的Java邮件发送:简单邮件发送

本文链接: https://blog.csdn.net/xietansheng/article/details/51673073 电子邮件的应用非常广泛&#xff0c;例如在某网站注册了一个账户&#xff0c;自动发送一封欢迎邮件&#xff0c;通过邮件找回密码&#xff0c;自动批量发送活动信息等。但这些应用不可能和我们自己平时…

js 实现计数器功能

1.运用 setInterval()定时器计算秒数 <!DOCTYPE html> <html><head><title>JS实现计数器</title><meta http-equiv"content-type" content"text/html; charsetgbk"><script src"https://cdn.bootcss.com/jqu…

element的formatter失效的解决方案

formatter传入数据失效 组件封装的时这样 使用方式还是和element的官方使用方式相同

html输入框只能输入文字,input文本框强制输入指定文字的方法以及IE11的兼容

背景:最近开发的韩国项目,在用户姓名输入框一栏中,要求只能输入韩文,通常用到onkeyup和onafterpaste两个事件来触发方法,并在方法中进行校验,但是在IE浏览器中,出现了一种情况,就是韩文单词拼写未完成的时候,会直接进行校验并显示,如下图实例所展示,并不是需要想要的…

jquery对表格行列的操作-jquery动态增加表格行或者列

jquery对表格的操作是老生常谈的问题。最近项目中用到了&#xff0c;今天在这里分享一下&#xff01; 效果大体如下&#xff1a; 分享一下代码吧&#xff01; html <div class"table-responsive" id"Bk_table" style"display:none;">&l…

动态改变Input和Textarea值Vue数据没有绑定的解决办法

背景&#xff1a; 我在循环里面的input框需要限制输入的值的类型&#xff0c;如果我绑定了change的方法的话 首先需要失去焦点才能生效&#xff0c;如果不失去焦点直接点击确定按钮是不能触发事件的 值还是原来的 &#xff0c;第二个如果层级多的话需要把索引什么的传过去用$se…

HTML 限制文本框只能输入数字 onkeyup+onafterpaste

限制文本框只能输入数字 < input onkeyup "if(isNaN(value))execCommand(undo)" onafterpaste "if(isNaN(value))execCommand(undo)" > < input name txt1 onchange "if(/\D/.test(this.value)){alert(只能输入数字);this.value;}" …

JAVAFX的table样式修改

直接上代码吧&#xff0c; .table-view{-fx-font-size: 16; 修改表格字体的大小 } 表头的背景设置 .table-view .column-header-background {-fx-background-color: #DBDBDB; } 表头设置 .table-view .column-header{-fx-border-color:#ffffff; -fx-border-width:0 1 …