SpringBoot发送邮件(SpringBoot整合JavaMail)

以QQ邮箱为例。

创建一个springboot的Module

在这里插入图片描述

导入maven坐标

导入JavaMail都maven坐标。

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

在这里插入图片描述

设置QQ邮箱

进入自己(发送邮件方)QQ邮箱。
在这里插入图片描述
在这里插入图片描述
找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务区域,如下:
在这里插入图片描述
点击开启POP3/SMTP服务,并按要求发送短信。
在这里插入图片描述
在这里插入图片描述
发送成功后,点击“我已发送”会得到如下授权码(保存好密码配置application.yml时会用),然后点击确定。
在这里插入图片描述

做配置

在application中做如下配置。

host处如果是qq邮箱就写smtp.qq.com如果是126邮箱就写smtp.126.com依此类推。
在这里插入图片描述

代码编写

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

整体目录结构

在这里插入图片描述

service接口(发送邮件)

package com.xxx.springboot_mail.service;

public interface SendMailService {

    //发送邮件
    void sendMail();

}

接口的实现

1、发送人,配置文件中的username写的什么,这里就写什么。
在这里插入图片描述
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
如下:
发送链接
在这里插入图片描述
发送图片(src中为网络文件链接)
private String context="<img src='https://img.zcool.cn/community/01775d57c3d1cd0000018c1bcb4ade.jpg@1280w_1l_2o_100sh.jpg'>百度</a>";//发送图片

注意设置setText参数为true
在这里插入图片描述

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参数。
在这里插入图片描述
2、添加附件
在这里插入图片描述
注意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();

        }
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

齊 天 大 聖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值