springboot整合邮箱Mail

邮件传输协议

  • SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则

  • POP3协议:全称为 Post Office Protocol,邮局协议。它定义了邮件客户端软件和POP3邮件服务器的通信 规则

  • IMAP协议:全称为 Internet Message Access Protocol,Internet消息访问协议,它是对POP3协议一种扩展,也是定义了邮件客户端软件和IMAP邮件服务器的通信规则

1、准备

        以网易163邮箱为例子,准备一个163的邮箱号码

        在设置里找到 POP3/SMTP/IMAP 开启相应的服务,这时候会让你发送短信,验证授权,然后在网页会出现一个授权码,请保存那个授权码,请保存那个授权码,请保存那个授权码!重要事情说3遍。

这个在本页面下方

 2、在项目pom文件加入依赖

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

3、配置application.yml

spring:

  # 邮箱服务配置  
  mail:
    # 发送邮件服务器
    host: smtp.163.com
    # 发送邮件邮箱地址
    username: 123123@163.com
    #授权码,不是邮箱密码, 自己改成获取到的那个授权码
    password: DHERTYDFGDFGS
    # 发件人,和上面username一致
    addresser: 123123@163.com
    # 开启ssl协议
    properties.mail.smtp.starttls.enable: true
    properties.mail.smtp.starttls.required: true
    properties.mail.smtp.ssl.enable: true
    default-encoding: utf-8

4、创建发送邮件服务对象

package com.tsai.user.service;

/**
 * @ClassName: MailService
 * @Author: Tsai-JH
 * @Date: 2021/7/17 15:53
 * @Description: 邮箱服务层接口
 */
public interface MailService {

    /**
     * 发送邮件
     *
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     */
    void sendMail(String to, String subject, String content);
}
package com.tsai.user.service.impl;

import com.tsai.user.service.MailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @ClassName: MailServiceImpl
 * @Author: Tsai-JH
 * @Date: 2021/7/17 15:54
 * @Description: 邮箱服务层实现类
 */
@Service
@Slf4j
public class MailServiceImpl implements MailService {

    @Resource
    private JavaMailSender mailSender;

    @Value("${spring.mail.addresser}")
    private String addresser;

    /**
     * 发送邮箱
     *
     * @param to      收件人
     * @param subject 主题
     * @param content 内容
     */
    @Override
    public void sendMail(String to, String subject, String content) {
        // 邮箱消息对象
        SimpleMailMessage message = new SimpleMailMessage();
        //发送人
        message.setFrom(addresser);
        // 收件人
        message.setTo(to);
        // 主题
        message.setSubject(subject);
        // 内容
        message.setText(content);
        mailSender.send(message);
        log.info("邮件发送成功 : {}", message.toString());
    }
}

5、controller暴露接口

@Resource
private MailService mailService;


@PostMapping("mail")
@ApiOperation(notes = "发送邮件", value = "发送邮件")
public void sendMail(@ApiParam(value = "收件人", name = "to", required = true) String to,
                     @ApiParam(value = "主题", name = "subject", required = true) String subject,
                     @ApiParam(value = "内容", name = "content", required = true) String content) {
    mailService.sendMail(to, subject, content);
}

 controller的格式是swagger的,然后就可以发送邮件了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值