SpringBoot发送邮件

SpringBoot发送邮件

一. 添加依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!--发送html模板需要用到该依赖-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

二. 配置信息

#服务端口号
server.port=8080
#应用名称
spring.application.name=springboot-mail-demo
#邮箱主机(此处为QQ邮箱)
spring.mail.host=smtp.qq.com
#邮箱用户名(发送人的邮箱号)
spring.mail.username=1074593588@qq.com
#授权码,可以在邮箱账户设置中发送短信获取
spring.mail.password=vyphdusyypfyghia
#是否开启认证
spring.mail.properties.mail.smtp.auth=true
#是否开启starttls协议
spring.mail.properties.mail.smtp.starttls.enbale=true
#starttls协议是否必须
spring.mail.properties.mail.smtp.starttls.required=true

三. 邮件种类

3.1 发送简单的邮件

package com.prosay.mail.service.impl;

import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

@Service
public class MailServiceImpl implements MailService {

    @Value("${spring.mail.username}")
    private String from;
	
    //导入mail依赖,SpringBoot会根据配置文件自动配置该bean,所以可以直接注入
    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public void sendSimpleMail() {
        //创建简单的邮件消息
        SimpleMailMessage message = new SimpleMailMessage();
        //设置邮件的发送者(来源)
        message.setFrom(from);
        //设置邮件的接收者(目的地)
        message.setTo("916246448@qq.com");
        //设置邮件的主题
        message.setSubject("Spring Boot");
        //设置邮件的文本内容
        message.setText("这是一封来自Spring Boot的邮件!");
        //设置邮件发送日期
        message.setSentDate(new Date());
        //发送邮件
        javaMailSender.send(message);
    }
}

3.2 发送html格式的邮件

  • 编码与发送简单邮件差不多
package com.prosay.mail.service.impl;

import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

@Service
public class MailServiceImpl implements MailService {

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

    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public void sendHtmlMail() {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            //消息助手,帮助我们设置message的信息,还可以帮助我们添加附件、静态资源和html模板
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo("916246448@qq.com");
            helper.setSubject("Spring Boot html邮件");
            StringBuilder builder = new StringBuilder();
            builder.append("<p style='color:#42b983'>使用Spring Boot和RabbitMQ发送HTML格式邮件。</p>");
            helper.setText(builder.toString(), true);
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

3.3 发送带附件的邮件

package com.prosay.mail.service.impl;

import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

@Service
public class MailServiceImpl implements MailService {

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

    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public void sendAttrachmentsMail() {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo("916246448@qq.com");
            helper.setSubject("Spring Boot attachments");
            helper.setText("详情请看附件");
            //通过文件路径获取附件
            FileSystemResource resource = new FileSystemResource(new File("src/main/resources/application" +
                    ".properties"));
            //增加附件
            helper.addAttachment("application.properties", resource);
            //发送
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

3.4 发送带静态资源的邮件

package com.prosay.mail.service.impl;

import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

@Service
public class MailServiceImpl implements MailService {

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

    @Autowired
    private JavaMailSender javaMailSender;

    @Override
    public void sendStaticResourceMail() {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo("916246448@qq.com");
            helper.setSubject("Spring Boot attachments");
            helper.setText("<html><body>图片:<img src='cid:img'/></body></html>", true);
            //获取图片资源
            FileSystemResource img = new FileSystemResource(new File("src/main/resources/static/file/img.jfif"));
            //注意,src中cid:后面的值(img)要和此处'img'相同
            helper.addInline("img", img);
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}

3.5 发送html模板的邮件

package com.prosay.mail.service.impl;

import com.prosay.mail.service.MailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;

@Service
public class MailServiceImpl implements MailService {

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

    @Autowired
    private JavaMailSender javaMailSender;

    @Autowired
    private TemplateEngine templateEngine;

    @Override
    public void sendTemplateMail(String code) {
        MimeMessage message = javaMailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo("916246448@qq.com");
            helper.setSubject("Spring Boot RabbitMQ");
            Context context = new Context();
            context.setVariable("code", code);
            //'emailTemplate'是html模板的名字,
            String template = this.templateEngine.process("emailTemplate", context);
            helper.setText(template, true);
            javaMailSender.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        }
    }
}
  • html模板(名字:emailTemplate)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板</title>
</head>
<body>
    您好,您的验证码为<span th:text="${code}"></span>,请在两分钟内使用完成操作。
</body>
</html>

四. 感谢

  • 本篇参考了Mrbird写的博客,如果有兴趣可以去看看,博客很漂亮内容很精彩。
  • 地址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值