spring boot 集成邮件发送功能

这篇具有很好参考价值的文章主要介绍了spring boot 集成邮件发送功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、首先到QQ邮箱申请开启POP3、SMTP协议
spring boot 集成邮件发送功能,spring boot,后端,java
二、安装依赖

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

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

三、配置文件

spring:
  #配置邮箱发送邮件
  mail:
    default-encoding: utf-8 #默认编码
    host: smtp.qq.com #配置SMTP 服务器地址
    username: xxxxxxx@qq.com #发送者邮箱
    password: xxxxxxxxxxx#申请到的授权码
    port: 587 #端口号587或 465
    properties: #配置SSL 加密工厂
      mail:
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory
        debug: true #表示开启debug模式,这样,邮件发送的过程会在控制台打印出来,这样方便排查错误
        #配置这些好后,springboot会自动帮我们配置好相关的邮件发送类
  thymeleaf:
    cache: false
    prefix: classpath:/templates/

四、如果需要发送模板的邮件,则在/templates/目录下建立email.html文件

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>使用Thymeleaf作为邮件的模板</title>
</head>
<body>
<p>hello 欢迎加入 xxx 大家庭,您的入职信息如下:</p>
<table border="1">
    <tr>
        <td>姓名</td>
        <td th:text="${username}"></td>
    </tr>
    <tr>
        <td>职位</td>
        <td th:text="${position}"></td>
    </tr>
    <tr>
        <td>薪水</td>
        <td th:text="${salary}"></td>
    </tr>
</table>
<div style="color: #ff1a0e">一起努力创造辉煌</div>

</body>
</html>

五、如果需要异常打印信息的话新建自定义异常类BusinessException

public class BusinessException extends RuntimeException {
    public BusinessException(String msg){
        super(msg);
    }
}

六、如果需要发送附件的话,则新建网络文件转流类

package com.example.answer_system.utils;

import org.springframework.mock.web.MockMultipartFile;
import org.springframework.web.multipart.MultipartFile;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

//文件转换工具
public class FileUtils {

    /**
     * 将网络文件转换为文件流
     * @param imageUrl
     * @return
     */
    public static MultipartFile fileUrlConvertToMultipartFile(String imageUrl) {
        try {
            // 将在线图片地址转换为URL对象
            URL url = new URL(imageUrl);
            // 打开URL连接
            URLConnection connection = url.openConnection();
            // 转换为HttpURLConnection对象
            HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
            // 获取输入流
            InputStream inputStream = httpURLConnection.getInputStream();
            // 读取输入流中的数据,并保存到字节数组中
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                byteArrayOutputStream.write(buffer, 0, bytesRead);
            }
            // 将字节数组转换为字节数组
            byte[] bytes = byteArrayOutputStream.toByteArray();
            // 创建ByteArrayInputStream对象,将字节数组传递给它
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
            // 创建MultipartFile对象,将ByteArrayInputStream对象作为构造函数的参数
            MultipartFile multipartFile = new MockMultipartFile("file", "filename.jpg", "image/jpg", byteArrayInputStream);
            return multipartFile;
        }catch (IOException ex){
            ex.printStackTrace();
            throw new BusinessException("附件无效");
        }
    }
}

七、测试方法文章来源地址https://www.toymoban.com/news/detail-811523.html

package com.example.answer_system.service.impl;

import com.example.answer_system.service.IMailService;
import com.example.answer_system.utils.BusinessException;
import com.example.answer_system.utils.FileUtils;
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.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.annotation.Resource;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.util.Date;

@Service
public class MailServiceImpl implements IMailService {
    @Resource
    public JavaMailSender javaMailSender;

    @Value("${spring.mail.username}")
    private String sendUserMailName;

    @Resource
    private TemplateEngine templateEngine;

    //简单文本
    @Override
    public String sendMailQQMsg(){
        SimpleMailMessage message=new SimpleMailMessage();//构建一个邮件对象
        message.setSubject("使用springboot发送邮件测试");//设置邮件主题
        message.setFrom(sendUserMailName);//设置邮件发送人,要与application.yml文件配置一致
        message.setTo(sendUserMailName);//设置收件人,如果有多个接收人,使用","隔开
        //message.setCc("3121624188@qq.com");//设置抄送人,可以有多个
        //message.setBcc("3121624188@qq.com");//设置隐秘抄送人,可以有多个
        message.setSentDate(new Date());//设置发送日期
        message.setText("小程使用springboot发送邮件的简单测试!!");//设置邮件正文
        javaMailSender.send(message);//发送邮件
        return "OK";
    }

    @Override
    public String sendAttachFileMail(String filePath) {

        try {
            MimeMessage mimeMessage=javaMailSender.createMimeMessage();
            MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);//true表示构建一个带附件的邮件对象
            helper.setSubject("这是一封测试邮件,带附件的");
            helper.setFrom(sendUserMailName);
            helper.setTo(new String[]{sendUserMailName});
            helper.setSentDate(new Date());
            helper.setText("小程使用springboot发送可以带附件的邮件 测试!!");
            helper.addAttachment("james.jpg", FileUtils.fileUrlConvertToMultipartFile(filePath));//第一个参数是自定义的名称,第二个参数是文件的位置
            javaMailSender.send(mimeMessage);
        }catch (MessagingException ex){
            throw new BusinessException("发送异常");
        }catch (Exception ex){
            ex.printStackTrace();
        }

        finally {
            return "OK";
        }
    }

    @Override
    public String sendThymeleaf(){
        try {
            MimeMessage mimeMessage = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
            helper.setSubject("使用Thymeleaf模板作为发送邮件的模板");
            helper.setFrom(sendUserMailName);
            helper.setTo(sendUserMailName);
            helper.setSentDate(new Date());
            //这里进入的是Template的Context
            Context context = new Context();
            //设置模板中的变量
            context.setVariable("username","程婷");
            context.setVariable("position","java开发工程师");
            context.setVariable("salary","XXXXXK");
            //第一个参数作为模板的,名称
            String process = templateEngine.process("email.html", context);
            //第二个参数true表示这是html文本
            helper.setText(process,true);
            javaMailSender.send(mimeMessage);
        }catch (MessagingException ex){
            throw new BusinessException("失败");
        }
        return "OK";
    }

}

到了这里,关于spring boot 集成邮件发送功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot邮件发送教程:步步为营,轻松实现图片附件邮件!

      通过Spring Boot构建一个功能强大的邮件发送应用程序,重点是实现发送包含图片附件的邮件。我将逐步介绍添加必要的依赖、创建邮件服务类和控制器的步骤,并提供了具体的示例源代码。跟随这个简单而清晰的教程,您将能够轻松地集成邮件发送功能到您的Spring Boot应用中

    2024年02月04日
    浏览(52)
  • Spring Email实现邮件发送功能

    (本篇内容是博主在学习“牛客社区”这个项目时的笔记整理,为了方便自己以后查看,希望也能帮助到其他人。若有不恰当的地方还望指正~) 目录 一、邮箱设置 1. 开启POP3/SMTP服务,获取授权码 二、 使用Spring Email 1. 导入jar包  2. 在项目的propertites文件中写入如下配置 三、

    2023年04月25日
    浏览(43)
  • springboot 发送邮件,以及邮件工具类 并且解决spring-boot-starter-mail 发送邮件附件乱码或者文件错乱

    1、设置系统值 System.setProperty(“mail.mime.splitlongparameters”, “false”); 2、 在创建对象的时候定义编码格式(utf-8): MimeMessageHelper helper = new MimeMessageHelper(mes, true, “utf-8”); 3、 其次,在添加附件的时候,附件名是需要定义编码的 helper.addAttachment(MimeUtility.encodeWord(附件名,“utf-8”

    2024年02月15日
    浏览(68)
  • Spring Boot中发送邮件时,如何让发件人显示别名

    之前,我们通过一系列文章,介绍了如何在Spring Boot中发送邮件: 发送邮件 添加附件 引用静态资源 邮件模版 已经包含了大部分的应用场景。但最近DD在做YouTube中文配音的时候,碰到一个问题: 如上图所示,收件人在客户端收到的时候,显示的名称是邮箱的前缀,而不是我

    2024年02月08日
    浏览(50)
  • 【Spring Boot】Spring Boot 集成 RocketMQ 实现简单的消息发送和消费

    本文主要有以下内容: 简单消息的发送 顺序消息的发送 RocketMQTemplate的API介绍 环境搭建: RocketMQ的安装教程:在官网上下载bin文件,解压到本地,并配置环境变量,如下图所示: 在 Spring boot 项目中引入 RocketMQ 依赖: 在application.yml增加相关配置: 在 Spring Boot 中使用RocketM

    2024年02月14日
    浏览(50)
  • 【Spring Boot】集成Kafka实现消息发送和订阅

    最近忙着搞低代码开发,好久没新建spring项目了,结果今天心血来潮准备建个springboot项目 注意Type选Maven,java选8,其他默认 点下一步后完成就新建了一个spring boot项目,配置下Maven环境,主要是settings.xml文件,里面要包含阿里云仓库,不然可能依赖下载不下来 在maven配置没问

    2024年02月09日
    浏览(48)
  • spring boot集成mqtt协议发送和订阅数据

    maven的pom.xml引入包 mqtt.yml配置文件 初始化MQTT配置bean mqtt发送数据网关配置 发送数据到mqtt伪代码 参考链接: https://blog.csdn.net/sinat_21184471/article/details/87186186 https://blog.csdn.net/qq_29467891/article/details/107043225?utm_source=app https://blog.csdn.net/myinsert/article/details/107715538

    2024年02月11日
    浏览(44)
  • 【Java Web】发送邮件 Spring Mail+Thymeleaf

    1. 邮箱启用SMTP服务 生成授权码,然后看一下发送邮件服务器及端口。 2. Spring Mail 2.1 在pom中导入jar包 2.2 邮箱参数设置 2.3 使用JavaMailSender发送邮件,建立mailClient.java工具类 2.4 发邮件测试单元 3.模板引擎 在测试类中注入模板引擎,使用 testHtmlMail 方法发送html类型邮件。如果没

    2024年02月11日
    浏览(49)
  • Android前端+Spring Boot后端 登录功能实现

    创建项目后,自己添加包,框架如下   userController里的一些内容,只供参考,代码不全,无法实现 数据库是直接在社区版IDEA里连接Mysql,在控制台端创建的数据库和user表,用于数据交互。 Activity包里是Activity Java类,主要响应layout包里activity_login.xml等页面布局内的按钮响应 a

    2024年02月12日
    浏览(71)
  • 足够详细的java邮件发送功能(基于QQ邮箱,包含踩过的坑及解决办法!!)

      由于公司最近有业务需求,需要实现批量发送邮件到指定邮箱的功能,就写了一个小的工具类,开发过程中经历了踩坑然后优化,感觉这个功能还是有些细节还是要注意的,值得写文记录一下,有在开发中碰到相同问题的各位朋友可以参考一下,希望对各位能有所帮助!

    2024年02月07日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包