SpringBoot整合JavaMailSender(发送QQ邮件)


SpringBoot整合JavaMailSender(发送邮件)

一、概述

1、简介

  • SMTP:简单邮件传输协议,用于发送电子邮件的传输协议
  • POP3:用于接收电子邮件的标准协议
  • IMAP:互联网消息协议,是POP3的替代协议

2、方法

  • 简单邮件
  SimpleMailMessage message = new SimpleMailMessage();
  • 复杂邮件与附件邮件
   MimeMessage message = javaMailSender.createMimeMessage();
   MimeMessageHelper helper = new MimeMessageHelper(message);
  • 附件邮件
   MimeMessage message = javaMailSender.createMimeMessage();
   MimeMessageHelper helper = new MimeMessageHelper(message,true);

二、简单邮件发送

1、pom.xml

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

2、application.yml

spring:
  mail:
    host: smtp.qq.com
    username: 发件人邮箱
    password: 授权密码

3、Service接口类

package com.sgz.springboot.service;

public interface SendMailService {
    void sendMail();
}

3、ServiceImpl接口实现类

package com.sgz.springboot.service.impl;

import com.sgz.springboot.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;

    // 发送人
    private String from = "发件人邮箱";
    // 接收人
    private String to = "收件人邮箱";
    // 标题
    private String subject = "测试邮件标题";
    // 正文
    private String context = "测试邮件正文内容";

    @Override
    public void sendMail() {
    // 创建一个简单邮件
        SimpleMailMessage message = new SimpleMailMessage();
        // 设置发件人
        message.setFrom(from+"(发件人名称)"); // 可以设置发件人名称,要用英文的()  message.setFrom(from+"(发件人名称)");
        // 设置收件人
        message.setTo(to);
        // 设置发送的标题
        message.setSubject(subject);
        // 设置发送的内容
        message.setText(context);
        // 发送邮件
        javaMailSender.send(message);
        System.out.println("发送成功");
    }

}

4、测试类

package com.sgz.springboot;

import com.sgz.springboot.service.SendMailService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class ApplicationTests {

    @Autowired
    private SendMailService sendMailService;

    @Test
    void contextLoads() {
        sendMailService.sendMail();
    }

}

三、复杂邮件发送

3、ServiceImpl接口实现类

package com.sgz.springboot.service.impl;

import com.sgz.springboot.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.MessagingException;
import javax.mail.internet.MimeMessage;

/**
 * 日期:2022/9/6 - 15:35
 * 需求:
 */
@Service
public class SendMailServiceImpl implements SendMailService {

    @Autowired
    private JavaMailSender javaMailSender;

    // 发件人
    private String from = "发件人邮箱";
    // 收件人
    private String to = "收件人邮箱";
    // 标题
    private String subject = "测试邮件标题";
    // 正文
    private String context = "<img src='网络图片地址'/><a href='https://www.baidu.com'> 点开有惊喜 </a>";

    @Override
    public void sendMail() {
    
        // 复杂邮件
        try {
            // 创建一个简单邮件
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message);
            // 设置发件人
            helper.setFrom(from+"(发件人名称)"); // 可以设置发件人名称,要用英文的()  message.setFrom(from+"(发件人名称)");
            // 设置收件人
            helper.setTo(to);
            // 设置发送的标题
            helper.setSubject(subject);
            // 设置发送的内容
            helper.setText(context,true);   // true:有超连接时,解析连接
            // 发送邮件
            javaMailSender.send(message);
            System.out.println("发送成功");
        } catch (MessagingException e) {
            e.printStackTrace();
        }

    }
}

四、附件邮件发送

3、ServiceImpl接口实现类

package com.sgz.springboot.service.impl;

import com.sgz.springboot.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.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;

@Service
public class SendMailServiceImpl implements SendMailService {

    @Autowired
    private JavaMailSender javaMailSender;

    // 发送人
    private String from = "发件人邮箱";
    // 接收人
    private String to = "收件人邮箱";
    // 标题
    private String subject = "测试邮件标题";
    // 正文
    private String context = "测试邮件内容";

    @Override
    public void sendMail() {
    
        // 附件邮件
        try {
            // 创建一个简单邮件
            MimeMessage message = javaMailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message,true); // true:发送附件时需要添加
            // 设置发件人
            helper.setFrom(from+"(发件人名称)"); // 可以设置发件人名称,要用英文的()  message.setFrom(from+"(发件人名称)");
            // 设置收件人
            helper.setTo(to);
            // 设置发送的标题
            helper.setSubject(subject);
            // 设置发送的内容
            helper.setText(context);   
            // 添加附件
            File file1 = new File("D:\\Java\\SpringBoot\\daily_demo02\\day76_springboot_mail\\target\\day76_springboot_mail-0.0.1-SNAPSHOT.jar");
            File file2 = new File("D:\\Java\\SpringBoot\\daily_demo02\\day76_springboot_mail\\src\\main\\resources\\8.png");
            // 添加附件到邮件
            helper.addAttachment(file1.getName(), file1);
            helper.addAttachment("最好看的壁纸.png", file2);
            // 发送邮件
            javaMailSender.send(message);
            System.out.println("发送成功");
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值