SpringBoot整合JavaMail 可以发送单纯的文字邮件 也可发送有html文件或者发送压缩包多文件邮件

简介: SpringBoot整合JavaMail 可以发送单纯的文字邮件 也可发送有html文件或者发送压缩包多文件邮件

导入坐标



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


配置文件


host指的是


spring:
  mail:
    host: smtp.qq.com
    password: qkzgrtozzrwncbed
    username: 212184206@qq.com


host指的是你用哪种方式发送邮件

username指的是使用哪一个邮箱发送邮件

password指的是


0e892f24d3694a4c88bfc827ab8847a5.png


发送简单邮件


接口


package com.itheima.service;
public interface SendMailService {
    void sendMail();
}


实现类


使用的是JavaMailSender对象,然后使用他的.send方法,参数是message,message包括了一封邮箱的基本内容,包括邮箱发送者,邮箱接受者,邮箱主题,邮箱正文内容。


package com.itheima.service.impl;
import com.itheima.service.SendMailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Component;
@Component
public class SendMailServiceImpl2 implements SendMailService {
    @Autowired
    private JavaMailSender javaMailSender;
//    发送人
    private String from = "212184206@qq.com";
//    接收人
    private String to = "2239263778@qq.com";
//    标题
    private String subject = "测试邮箱";
//    正文
    private String context = "测试邮箱正文内容";
    @Override
    public void sendMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from);
        message.setTo(to);
        message.setSubject(subject);
        message.setText(context);
        javaMailSender.send(message);
    }
}


测试类


这里要注意的是:虽然成员变量是接口,但是这个@Autowired注解,就会使得Spring容器中的实现类会自动装配到这个成员变量中,就相当于是左边是接口,右边是实现类。


package com.itheima;
import com.itheima.service.SendMailService;
import com.itheima.service.impl.SendMailServiceImpl;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot22MailApplicationTests {
    @Autowired
    private SendMailService sendMailService;  
    @Test
    void contextLoads() {
        sendMailService.sendMail();
    }


发送多部件邮件


  1. 在正文中添加html文件
  2. 在正文中添加压缩附件等。


还是使用JavaMailSender创建对象,然后使用这个对象的javaMailSender.createMimeMessage(); 方法创建message对象,之后就是使用MimeMessageHelper helper创建help对象,之后还是设置信息的四个内容,如果传的是html文件,就要在helper.setText(context,true); 中true,如果是发送附件,就要在helper对象中添加true。


package com.itheima.service.impl;
import com.itheima.service.SendMailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMailMessage;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
@Component
public class SendMailServiceImpl implements SendMailService {
    @Autowired
    private JavaMailSender javaMailSender;
//    发送人
    private String from = "212184206@qq.com";
//    接收人
    private String to = "2239263778@qq.com";
//    标题
    private String subject = "测试邮箱";
//    正文
    private String context = "<a href = 'https://www.baidu.com/'>点开有惊喜</a>";
    @Override
    public void sendMail() {
        MimeMessage message = javaMailSender.createMimeMessage();   // 这行代码就是都有的  只不过换成了createMimeMeaasge
        try {
//            这行代码就是发送多部件添加的  -- 后面的true就是开启多部件(压缩包)
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(context,true);  // 这行代码的true就是使得邮件中可以使用html文件
//            添加附件
            File f1 = new File("D:\\study\\SpringBoot2\\springboot_22_mail\\src\\main\\resources\\a.jpg");
            helper.addAttachment(f1.getName(),f1);  // 添加附件
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        javaMailSender.send(message);
    }
}



相关文章
|
5天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
40 1
SpringBoot获取项目文件的绝对路径和相对路径
|
15天前
|
XML Java Kotlin
springboot + minio + kkfile实现文件预览
本文介绍了如何在容器中安装和启动kkfileviewer,并通过Spring Boot集成MinIO实现文件上传与预览功能。首先,通过下载kkfileviewer源码并构建Docker镜像来部署文件预览服务。接着,在Spring Boot项目中添加MinIO依赖,配置MinIO客户端,并实现文件上传与获取预览链接的接口。最后,通过测试验证文件上传和预览功能的正确性。
springboot + minio + kkfile实现文件预览
|
5天前
|
存储 前端开发 JavaScript
|
5天前
|
存储 Java API
|
7天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
25 2
|
20天前
|
Web App开发 前端开发 搜索推荐
创建HTML文件
【10月更文挑战第14天】创建HTML文件
31 4
|
28天前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
25天前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
265 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
6天前
|
Java
SpringBoot获取文件将要上传的IP地址
SpringBoot获取文件将要上传的IP地址
21 0
|
13天前
|
缓存 Java 程序员
Java|SpringBoot 项目开发时,让 FreeMarker 文件编辑后自动更新
在开发过程中,FreeMarker 文件编辑后,每次都需要重启应用才能看到效果,效率非常低下。通过一些配置后,可以让它们免重启自动更新。
20 0