Skip to content

Springboot实现邮件发送 ​

📅 发表于 2021-01-30

1.项目的创建 ​

1.1创建一个Springboot项目 ​

核心pom.xml的配置

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

1.2配置邮箱服务配置文件 ​

在application.yml里面配置如下

下面以QQ邮箱为例:

yml
spring:
#    邮件服务
  mail:
    host: smtp.qq.com
    username: <qq邮箱账户>
    password: <smtp服务的授权码>
    # 端口号465或587
    port: 587
    # 默认的邮件编码为UTF-8
    default-encoding: UTF-8
    # 配置SSL 加密工厂
    properties:
      mail:
        smtp:
          socketFactoryClass: javax.net.ssl.SSLSocketFactory
        #表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误
        debug: true

⚠️ 原配图外链已失效,暂缺。

2.核心业务代码 ​

2.1在service层创建MailService.java ​

java
@Service
public class MailService {

    @Autowired
    private JavaMailSender mailSender;

    //传入邮箱发件人
    @Value("${spring.mail.username}")
    private String sender;


   //发送简单邮件
    public void sendSimpleMail(String receiver,String subject,String context){

        SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
        simpleMailMessage.setFrom(sender);
        simpleMailMessage.setTo(receiver);
        simpleMailMessage.setText(context);
        simpleMailMessage.setSubject(subject);
        simpleMailMessage.setSentDate(new Date());

        try {
            mailSender.send(simpleMailMessage);
            System.out.println("简单邮件已发送");
        }catch (Exception e){
            System.out.println("简单邮件发送出错"+e);
        }

    }

    //发送HTML邮件
    public void sendHtmlMail(String receiver,String subject,String context){
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        try {
            MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
            mimeMessageHelper.setFrom(sender);
            mimeMessageHelper.setTo(receiver);
            mimeMessageHelper.setText(context,true);
            mimeMessageHelper.setSubject(subject);
            mailSender.send(mimeMessage);
        } catch (MessagingException e) {
            System.out.println("简单邮件发送出错"+e);
        }
    }

}

2.2在controller创建mailController.java ​

java
@Controller
public class mailController {

    @Resource
    MailService mailService;

    @Resource
    TemplateEngine templateEngine;

    @RequestMapping("/tomail")
    @ResponseBody
    public String toMail(){
        String title = "<邮件标题>";
        String email = "<收件人邮箱>";
        Context context = new Context();
//        设置传入模板的页面的参数 参数名为:id 参数随便写一个就行
        context.setVariable("id", "000");
//        emailTemplate是要发送的模板邮件
        String process = templateEngine.process("emailTemplate", context);
        mailService.sendHtmlMail(email,title,process);
        return "success";
    }

}