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指的是在这里插入图片描述

发送简单邮件

接口

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

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花花叔叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值