SpringBoot发送邮件(SpringBoot整合JavaMail)

SpringBoot发送邮件(SpringBoot整合JavaMail)

  • 创建一个springboot的Module
  • 导入maven坐标
  • 设置QQ邮箱
  • 做配置
  • 代码编写
    • 发送简单邮件(文字类邮件)
      • 整体目录结构
      • service接口(发送邮件)
      • 接口的实现
      • 测试
    • 发送复杂邮件
      • 发送图片与链接
      • 发送附件

以QQ邮箱为例。

创建一个springboot的Module

SpringBoot发送邮件(SpringBoot整合JavaMail)_第1张图片

导入maven坐标

导入JavaMail都maven坐标。

		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-mailartifactId>
        dependency>

SpringBoot发送邮件(SpringBoot整合JavaMail)_第2张图片

设置QQ邮箱

进入自己(发送邮件方)QQ邮箱。
SpringBoot发送邮件(SpringBoot整合JavaMail)_第3张图片
SpringBoot发送邮件(SpringBoot整合JavaMail)_第4张图片
找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务区域,如下:
SpringBoot发送邮件(SpringBoot整合JavaMail)_第5张图片
点击开启POP3/SMTP服务,并按要求发送短信。
SpringBoot发送邮件(SpringBoot整合JavaMail)_第6张图片
SpringBoot发送邮件(SpringBoot整合JavaMail)_第7张图片
发送成功后,点击“我已发送”会得到如下授权码(保存好密码配置application.yml时会用),然后点击确定。
SpringBoot发送邮件(SpringBoot整合JavaMail)_第8张图片

做配置

在application中做如下配置。

host处如果是qq邮箱就写smtp.qq.com如果是126邮箱就写smtp.126.com依此类推。
SpringBoot发送邮件(SpringBoot整合JavaMail)_第9张图片

代码编写

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

整体目录结构

SpringBoot发送邮件(SpringBoot整合JavaMail)_第10张图片

service接口(发送邮件)

package com.xxx.springboot_mail.service;

public interface SendMailService {

    //发送邮件
    void sendMail();

}

接口的实现

1、发送人,配置文件中的username写的什么,这里就写什么。
SpringBoot发送邮件(SpringBoot整合JavaMail)_第11张图片
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="百度";//发送图片

注意设置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="百度";发送链接
    //private String context="百度";发送图片


    @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、添加附件
SpringBoot发送邮件(SpringBoot整合JavaMail)_第12张图片
注意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="[email protected]";
    //接收人
    private String to="[email protected]";
    //标题
    private String subject = "测试邮件";
    //正文(支持html)setText设置参数true
    //private String context="测试邮件正文内容";
    //private String context="百度";//发送链接
    private String context="百度";//发送图片


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

        }
    }
}

你可能感兴趣的:(SpringBoot,spring,boot,java,intellij-idea)