SpringBoot实现发送邮件

Posted 龙宝cl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot实现发送邮件相关的知识,希望对你有一定的参考价值。

1.QQ邮箱发送邮件设置

首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设置>>>点击账户>>>找到POP3|SMTP服务>>>点击开启(开启需要验证,验证成功后会有一串授权码用于发送邮件使用)>>>验证成功 看图操作

技术分享图片
技术分享图片
技术分享图片

授权码一定记得复制出来

**0.引入包**
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
**1.填写配置文件此处使用yml文件配置,使用yml配置记得注意格式哦,以免出错。**
spring:
 mail:
 default-encoding: UTF-8
 host: smtp.qq.com
 protocol: smtp
 username: 邮箱账号
 password: 服务授权码(不是QQ密码而是刚刚开启的POP3/SMTP服务 的授权码)
 smtp: 
 auth: true
 starttls: 
 enable: true
 required: true
**2.新建类实现发送邮件**
import java.io.File;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/** 
 * @author ADMIN
 * @date 2018年10月9日 下午3:59:59
 * @version 1.0 
 */
@RestController
public class MailController {
    
    
    @Autowired
    JavaMailSender jms;
    //发送文本消息,不带附件,内容是可以带html等标签之类的哦
    @GetMapping("/send")    
    public String send(){        
        //建立邮件消息        
        SimpleMailMessage mainMessage = new SimpleMailMessage();        
        //发送者        
        mainMessage.setFrom("发送者邮箱(需要在配置文件中一致)");        
        //接收者        
        mainMessage.setTo("接收者邮箱");        
        //发送的标题        
        mainMessage.setSubject("发送的标题");        
        //发送的内容        
        mainMessage.setText("发送的内容");        
        jms.send(mainMessage);        
        return "true";    
        
    }
    
    /**
     * 带附件发送,可多个附件 图片,doc都可以发送。
     * ADMIN
     * 2018年10月13日 下午12:31:13
     */
    @GetMapping("/sendFile")
    public void sendAttachmentsMail() {
        
        String [] fileArray={"C:UsersAdministratorDesktop图片.jpg","C:UsersAdministratorDesktop图片aa.zip"};
        
        MimeMessage message=jms.createMimeMessage();
 try {
     MimeMessageHelper helper=new MimeMessageHelper(message,true);
 helper.setFrom("发送者邮箱(需要在配置文件中一致)");
 helper.setTo("接收者邮箱");
 helper.setSubject("发送标题");
 helper.setText("发送内容");
 //验证文件数据是否为空
 if(null != fileArray){
     FileSystemResource file=null;
     for (int i = 0; i < fileArray.length; i++) {
         //添加附件
         file=new FileSystemResource(fileArray[i]);
         helper.addAttachment(fileArray[i].substring(fileArray[i].lastIndexOf(File.separator)), file);
     }
 }
 jms.send(message);
 System.out.println("带附件的邮件发送成功");
 }catch (Exception e){
 e.printStackTrace();
 System.out.println("发送带附件的邮件失败");
 }
 }
}
PS:网易邮箱发送和QQ邮箱是一样的,只需要修改配置文件的host,username,password三个参数。将host改成:smtp.163.com,用户名和密码改成网易邮箱对应的就行

 


原文:https://blog.csdn.net/qq_34523482/article/details/83037551

以上是关于SpringBoot实现发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合Mail

我应该如何使用 Outlook 发送代码片段?

[SpringBoot]实现发送邮件API/发件人中文别名

SpringBoot实现发送邮件

用python实现自动发邮件的功能

springboot业务功能实战(二十)连接内外网邮箱配置全解析,实现邮件提醒功能