SpringBoot发送邮件(SpringBoot整合JavaMail)

简介: 以QQ邮箱为例。

创建一个springboot的Module

2345_image_file_copy_346.jpg

导入maven坐标

导入JavaMail都maven坐标。

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

2345_image_file_copy_347.jpg

设置QQ邮箱

进入自己(发送邮件方)QQ邮箱。

2345_image_file_copy_348.jpg

2345_image_file_copy_349.jpg

找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务区域,如下:

2345_image_file_copy_350.jpg

点击开启POP3/SMTP服务,并按要求发送短信。

2345_image_file_copy_351.jpg

2345_image_file_copy_352.jpg

发送成功后,点击“我已发送”会得到如下授权码(保存好密码配置application.yml时会用),然后点击确定。

2345_image_file_copy_353.jpg

做配置

在application中做如下配置。

host处如果是qq邮箱就写smtp.qq.com如果是126邮箱就写smtp.126.com依此类推。

2345_image_file_copy_354.jpg

代码编写

发送简单邮件(文字类邮件)

整体目录结构

2345_image_file_copy_355.jpg

service接口(发送邮件)

package com.xxx.springboot_mail.service;
public interface SendMailService {
    //发送邮件
    void sendMail();
}

接口的实现

1、发送人,配置文件中的username写的什么,这里就写什么。

2345_image_file_copy_356.jpg

2、接收人,给谁发就写谁的。

3、可根据具体要求完善代码,这里只做简单测试。

package com.xxx.springboot_mail.service.impl;
import com.xxx.springboot_mail.service.SendMailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class SendMailServiceImpl implements SendMailService {
    @Autowired
    private JavaMailSender javaMailSender;//注入JavaMailSender
    //发送人
    private String from="xxxxxx@qq.com";
    //接收人
    private String to="yyyyyy@qq.com";
    //标题
    private String subject = "测试邮件";
    //正文
    private String context="测试邮件正文内容";
    @Override
    public void sendMail() {
        SimpleMailMessage message = new SimpleMailMessage();
        //谁发的
        message.setFrom(from);
        //message.setFrom(from+"(abc)");abc将代替from
        //发给谁
        message.setTo(to);
        //邮件标题
        message.setSubject(subject);
        //邮件内容
        message.setText(context);
        //调用JavaMailSender的send方法即可发送邮件
        javaMailSender.send(message);
    }
}

测试

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

发送复杂邮件

发送图片与链接

正文内容支持html

如下:

发送链接

2345_image_file_copy_357.jpg

发送图片(src中为网络文件链接)

private String context="<img src='https://img.zcool.cn/community/01775d57c3d1cd0000018c1bcb4ade.jpg@1280w_1l_2o_100sh.jpg'>百度</a>";//发送图片

注意设置setText参数为true

2345_image_file_copy_358.jpg

package com.xxx.springboot_mail.service.impl;
import com.xxx.springboot_mail.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.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.internet.MimeMessage;
@Service
public class SendMailServiceImpl02 implements SendMailService {
    @Autowired
    private JavaMailSender javaMailSender;//注入JavaMailSender
    //发送人
    private String from="xxx@qq.com";
    //接收人
    private String to="yyy@qq.com";
    //标题
    private String subject = "测试邮件";
    //正文(支持html)setText设置参数true
    private String context="测试邮件正文内容";
    //private String context="<a href='http://www.baidu.com'>百度</a>";发送链接
    //private String context="<img src='https://img.zcool.cn/community/01775d57c3d1cd0000018c1bcb4ade.jpg@1280w_1l_2o_100sh.jpg'>百度</a>";发送图片
    @Override
    public void sendMail() {
        try{
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message);
            //谁发的
            helper.setFrom(from);
            //message.setFrom(from+"(abc)");abc将代替from
            //发给谁
            helper.setTo(to);
            //邮件标题
            helper.setSubject(subject);
            //邮件内容
            helper.setText(context,true);
            javaMailSender.send(message);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

发送附件

在上面基础上设置如下。

1、创建MimeMessageHelper对象时增加true参数。

2345_image_file_copy_359.jpg

2、添加附件

2345_image_file_copy_360.jpg

注意addAttachment第一个参数的后缀一定要与你原文件的后缀相同。

package com.xxx.springboot_mail.service.impl;
import com.xxx.springboot_mail.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.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.internet.MimeMessage;
import java.io.File;
@Service
public class SendMailServiceImpl02 implements SendMailService {
    @Autowired
    private JavaMailSender javaMailSender;//注入JavaMailSender
    //发送人
    private String from="xxxxxx@qq.com";
    //接收人
    private String to="yyyyyy@qq.com";
    //标题
    private String subject = "测试邮件";
    //正文(支持html)setText设置参数true
    //private String context="测试邮件正文内容";
    //private String context="<a href='http://www.baidu.com'>百度</a>";//发送链接
    private String context="<img src='https://img.zcool.cn/community/01775d57c3d1cd0000018c1bcb4ade.jpg@1280w_1l_2o_100sh.jpg'>百度</a>";//发送图片
    @Override
    public void sendMail() {
        try{
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message,true);
            //谁发的
            helper.setFrom(from);
            //message.setFrom(from+"(abc)");abc将代替from
            //发给谁
            helper.setTo(to);
            //邮件标题
            helper.setSubject(subject);
            //邮件内容
            helper.setText(context,true);
            File f1 = new File("E:\\xxxx\\a2.png");
            File f2 = new File("E:\\xxxx\\b1.jar");
            helper.addAttachment("文件名1.png",f1);//文件名叫什么(注意后缀),文件
            helper.addAttachment("文件名2.jar",f2);//文件名叫什么(注意后缀),文件
            javaMailSender.send(message);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
相关文章
|
安全 JavaScript Java
SpringBoot实现定时发送邮件
SpringBoot实现定时发送邮件
330 0
|
Java Spring
Spring boot项目如何发送邮件
Spring boot项目如何发送邮件
132 2
|
安全 Java 数据安全/隐私保护
SpringBoot+Email发送邮件
邮件通知是现代应用中常见的一种通信方式,特别是在需要及时反馈、告警或重要事件通知的场景下。Spring Boot提供了简单而强大的邮件发送功能,使得实现邮件通知变得轻而易举。本文将研究如何在Spring Boot中使用JavaMailSender实现邮件发送,以构建一个可靠的通知体系。
720 1
SpringBoot+Email发送邮件
|
Java 数据安全/隐私保护
Springboot拓展之整合邮件 JavaMail的使用与实操
Springboot拓展之整合邮件 JavaMail的使用与实操
486 0
|
消息中间件 JSON Java
如何利用springboot + rabbitmq发送邮件?
RabbitMQ相关知识请参考: RabbitMQ消息确认、消息持久化等核心知识总结 - 简书
212 2
|
Java
【Java专题_03】使用springboot发送邮件
【Java专题_03】使用springboot发送邮件
242 2
Springboot如何发送邮件
Springboot如何发送邮件
190 0
|
Java
SpringBoot项目发送邮件
SpringBoot项目发送邮件
268 1
|
Java 测试技术 Maven
Spring Boot发送邮件
Spring Boot发送邮件
|
JavaScript Java Spring
一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件
一张思维导图带你学会使用SpringBoot中的Schedule定时发送邮件
354 0

热门文章

最新文章