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

举报
花花叔叔 发表于 2022/08/12 22:50:58 2022/08/12
【摘要】 文章目录 导入坐标配置文件发送简单邮件发送多部件邮件 导入坐标 <dependency> <groupId>org.springframew...

导入坐标

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

  
 
  • 1
  • 2
  • 3
  • 4

配置文件

host指的是

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

host指的是你用哪种方式发送邮件
username指的是使用哪一个邮箱发送邮件
password指的是在这里插入图片描述

发送简单邮件

接口

package com.itheima.service;

public interface SendMailService {

    void sendMail();

}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

实现类
使用的是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);

    }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

测试类
这里要注意的是:虽然成员变量是接口,但是这个@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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

发送多部件邮件

  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);

    }
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

文章来源: blog.csdn.net,作者:花花叔叔,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_52077949/article/details/123052981

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。