0


使用JAVA实现邮件发送功能

一、准备工作

小编今天以 **

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: [email protected] # 配置邮箱用户名(你的邮箱地址)password: batrgddaqykegfss # 配置申请到的授权码(刚让复制的授权码)default-encoding: UTF-8# 配置邮件编码properties:mail:smtp:socketFactoryClass: javax.net.ssl.SSLSocketFactory # 配饰 SSL 加密工厂debug:truefrom: [email protected] # 发送方邮件,配在yml中可方便更改

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

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

packagecom.clover.utils;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.mail.SimpleMailMessage;importorg.springframework.mail.javamail.JavaMailSender;importorg.springframework.mail.javamail.MimeMessageHelper;importorg.springframework.stereotype.Component;importjavax.mail.Message;importjavax.mail.MessagingException;importjavax.mail.internet.MimeMessage;importjava.io.File;/**
 * @ClassName EmailUtil
 * @Description 邮件发送工具
 * @Author Sophia
 * @Date 2022/4/6 16:06
 */@ComponentpublicclassEmailUtil{@Value("${spring.mail.from}")// 从application.yml配置文件中获取privateString from;// 发送发邮箱地址@AutowiredprivateJavaMailSender mailSender;/**
     * 发送纯文本邮件信息
     *
     * @param to      接收方
     * @param subject 邮件主题
     * @param content 邮件内容(发送内容)
     */publicvoidsendMessage(Stringto,String subject,String content){// 创建一个邮件对象SimpleMailMessage msg =newSimpleMailMessage();
        msg.setFrom(from);// 设置发送发
        msg.setTo(to);// 设置接收方
        msg.setSubject(subject);// 设置邮件主题
        msg.setText(content);// 设置邮件内容// 发送邮件
        mailSender.send(msg);}/**
     * 发送带附件的邮件信息
     *
     * @param to      接收方
     * @param subject 邮件主题
     * @param content 邮件内容(发送内容)
     * @param files 文件数组 // 可发送多个附件
     */publicvoidsendMessageCarryFiles(Stringto,String subject,String content,File[] files){MimeMessage mimeMessage = mailSender.createMimeMessage();try{MimeMessageHelper helper =newMimeMessageHelper(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 单个文件
     */publicvoidsendMessageCarryFile(Stringto,String subject,String content,File file){MimeMessage mimeMessage = mailSender.createMimeMessage();try{MimeMessageHelper helper =newMimeMessageHelper(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);}publicStringgetFrom(){return from;}publicvoidsetFrom(String from){this.from = from;}}

2.4 测试邮件发送功能

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

packagecom.clover.api.blogapi;importcom.clover.utils.EmailUtil;importorg.junit.jupiter.api.Test;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.boot.test.context.SpringBootTest;importjava.io.File;@SpringBootTestclassBlogApiApplicationTests{@AutowiredprivateEmailUtil emailUtil;@TestvoidcontextLoads(){}@TestvoidsendStringEmail(){// 测试文本邮件发送(无附件)Stringto="[email protected]";// 这是个假邮箱,写成你自己的邮箱地址就可以String title ="文本邮件发送测试";String content ="文本邮件发送测试";
        emailUtil.sendMessage(to, title, content);}@TestvoidsendFileEmail(){// 测试单个附件邮件发送Stringto="[email protected]";// 这是个假邮箱,写成你自己的邮箱地址就可以String title ="单个附件邮件发送测试";String content ="单个附件邮件发送测试";File file =newFile("D:\\GCH\\Typora\\Linux中常用的查看系统相关信息命令.md");
        emailUtil.sendMessageCarryFile(to, title, content, file);}@TestvoidsendFilesEmail(){// 测试多个附件邮件发送Stringto="[email protected]";// 这是个假邮箱,写成你自己的邮箱地址就可以String title ="多个附件邮件发送测试";String content ="多个附件邮件发送测试";File[] files =newFile[2];
        files[0]=newFile("C:\\Users\\root\\Desktop\\配置邮箱\\1.png");
        files[1]=newFile("C:\\Users\\root\\Desktop\\配置邮箱\\2.png");
        emailUtil.sendMessageCarryFile(to, title, content, files);}}

2.5 测试结果

邮箱已收到
已收到

2.5.1 文本邮件发送

文本邮件发送

2.5.2 单个附件邮件发送

单个附件邮件发送

2.5.3 多个附件邮件发送

多个附件邮件发送

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

标签: java spring

本文转载自: https://blog.csdn.net/qq_42320934/article/details/124021133
版权归原作者 Wisdom0110 所有, 如有侵权,请联系我们删除。

“使用JAVA实现邮件发送功能”的评论:

还没有评论