当前位置:   article > 正文

使用SpringBoot整合邮件服务器发送邮件_使用springboot官方提供的邮件启动器

使用springboot官方提供的邮件启动器

使用SpringBoot整合邮件服务器发送邮件

本文主要使用网易163的邮件服务, 首先在https://mail.163.com/上注册一个账号,并且进入设置开启图下两项服务,获取到相关的授权码为后续整合使用

在这里插入图片描述

引入以下依赖使用

 <!--邮件模块依赖-->
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-mail</artifactId>
  </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

以下为yml文件中的配置

spring:
	mail:
	    host: smtp.163.com
	    #服务协议
	    protocol: smtp
	    username: xxxxxxxxxx@163.com #你注册的网易邮箱
	    password: xxxxxxxxxx #你获取到的授权码
	    test-connection: true
	    from:
	      properties.mail.smtp.starttls.enable: true
	      properties.mail.smtp.starttls.required: true
	      properties.mail.smtp.ssl.enable: true
	      default-encoding: utf-8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

发送简单文本邮件

/**
* 邮件VO类
*/
@Data
public class MailVo{
    private String id;//邮件id

    private String from;//邮件发送人

    private String to;//邮件接收人

    private String subject;//邮件主题

    private String text;//邮件内容

    private Date sentDate;//发送时间

    private String cc;//抄送

    private String bcc;//密送

    private String status;//状态

    private String error;//报错信息
    @JsonIgnore
    private MultipartFile[] multipartFiles;//邮件附件
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
@RestController
@RequestMapping("/mail/api/")
public class MailController {

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

    @Autowired
    private MailService mailService;

    @PostMapping("sendMessage/info")
    public Result sendMessageInfo(@RequestBody MailVo mailVo){
        mailVo.setFrom(from); // 设置邮件发送方
        MailVo mailVo1 = mailService.sendMail(mailVo);
        return Result.ok(mailVo1);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
@Service
public class MailServiceImpl implements MailService {

    @Autowired
    private JavaMailSender mailSender;

    @Override
    public MailVo sendMail(MailVo mailVo) {
        //创建简单邮件消息
        SimpleMailMessage message = new SimpleMailMessage();
        //谁发的
        message.setFrom(mailVo.getFrom());
        //谁要接收
        message.setTo(mailVo.getTo());
        //邮件标题
        message.setSubject(mailVo.getSubject());
        //邮件内容
        message.setText(mailVo.getText());
        mailSender.send(message);
        return mailVo;
    }
}    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

通过swagger或者postman进行测试就可以在接收信息的邮箱查看相关信息。

在这里插入图片描述

/**
* 附件发送测试
*/
@PostMapping("sendMessage")
public Result sendMessage(MultipartFile multipartFile){
     MailVo mailVo=new MailVo();
     mailVo.setFrom(from);
     mailVo.setSubject("测试文档");
     mailVo.setTo("<1918415339@qq.com>");// <1918415339@qq.com>
     mailVo.setText("测试邮箱发送文件");
     MailVo mailVo1 = mailService.sendMailPng(mailVo,multipartFile);
     return Result.ok(mailVo1);
 }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
/**
* 附件发送
*/
@Override
public MailVo sendMailPng(MailVo mailVo,MultipartFile multipartFile) {
     MimeMessage message = mailSender.createMimeMessage();
     try {
         MimeMessageHelper helper = new MimeMessageHelper(message, true);
         // 谁发送的信息
         helper.setFrom(mailVo.getFrom());
         // 谁接收
         helper.setTo(mailVo.getTo());
         // 邮件标题
         helper.setSubject(mailVo.getSubject());
         // 获取到文件全名称包括后缀
         String name = multipartFile.getOriginalFilename();
         // 邮件内容
         helper.setText(mailVo.getText(),true);
		 // 把附件转换为File
         File file = MultipartFileToFile(multipartFile);
         FileSystemResource res = new FileSystemResource(file);
         // 添加附件
         helper.addAttachment(name,res);
        	// 发送相关邮件
          mailSender.send(message);
         if (file.exists()) {
             file.delete();
         }
         return mailVo;
     } catch (MessagingException e) {
         e.printStackTrace();
     }
     return null;
 }
 /**
 * 将multiFile转为File对象
 */
 private File MultipartFileToFile(MultipartFile multiFile) {
        // 获取文件名
        String fileName = multiFile.getOriginalFilename();
        // 获取文件后缀
        String prefix = fileName.substring(fileName.lastIndexOf("."));
        // 若需要防止生成的临时文件重复,可以在文件名后添加随机码
        try {
            // File file = File.createTempFile(fileName, prefix);
            File file=new File(fileName);
            FileUtils.copyInputStreamToFile(multiFile.getInputStream(),file);
            return file;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

最终测试结果

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/967670
推荐阅读
相关标签
  

闽ICP备14008679号