Springboot使用JavaMail发送邮件


Springboot使用JavaMail发送邮件

开启邮箱POP3服务


记住授权码

创建项目

项目结构:

JavaMail依赖:

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

<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

配置yml:

spring:
  mail:
    #smtp服务主机  qq邮箱则为smtp.qq.com
    host: smtp.qq.com
    #服务协议
    protocol: smtp
    # 编码集
    default-encoding: UTF-8
    #发送邮件的账户
    username: xxxx@qq.com
    #授权码
    password: xxxx
    test-connection: true
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true

定义一个邮件类MailSenderEntity:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * description: 邮件
 *
 * @author zwq
 * @date 2021/11/17 17:11
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MailSenderEntity {

    /*发送方*/
    private String from;
    /*标题*/
    private String title;
    /*内容*/
    private String content;
    /*接收方*/
    private String[] tos;

}

Service层:

import com.zwq.main.constant.MailSenderEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

/**
 * description: 发送邮件
 *
 * @author zwq
 * @date 2021/11/17 17:08
 */
@Service
public class MailService {

	/* 注入JavaMail */
    @Autowired
    private JavaMailSender javaMailSender;

    public void sendMail(MailSenderEntity mailSenderEntity){
        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(mailSenderEntity.getFrom());
        simpleMailMessage.setSubject(mailSenderEntity.getTitle());
        simpleMailMessage.setText(mailSenderEntity.getContent());
        simpleMailMessage.setTo(mailSenderEntity.getTos());
        javaMailSender.send(simpleMailMessage);
    }

}

Controller层:

import com.zwq.main.constant.MailSenderEntity;
import com.zwq.main.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * description: 发送邮件
 *
 * @author zwq
 * @date 2021/11/17 17:06
 */
@RestController
@RequestMapping("/main")
public class SendController {

    @Autowired
    private MailService mailService;

    @PostMapping("/simple")
    public void sendSimpleMail(@RequestBody MailSenderEntity mailSenderEntity){
        mailService.sendMail(mailSenderEntity);
    }

	/* 测试发送邮件请求 */
    @GetMapping("/test")
    public void send(){
        MailSenderEntity mailSenderEntity = new MailSenderEntity();
        mailSenderEntity.setFrom("xxxx@qq.com");
        mailSenderEntity.setTitle("测试");
        mailSenderEntity.setContent("第一次发送邮件");
        String[] strings = {"xxxx@qq.com"};
        mailSenderEntity.setTos(strings);
        mailService.sendMail(mailSenderEntity);
    }
    
}

  目录