springboot发送邮件

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

此前需要开通使用邮箱的厂商的服务,在application.yml文件上加入

spring:
	mail:
	  host: smtp.qq.com
	  username: xxx@qq.com
	  password: xxx
	  protocol: smtps
	  properties:
	    mail:
	      smtp:
	        ssl:
	          enable: true

需要先编辑好一个html文件,使用thymeleaf来编辑处理

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>邮箱验证</title>
    <meta charset="utf-8">
</head>
<body>
<!-- 头部 -->
<div style="padding: 10px; background-color: #393D49;">
    <h2 style="color: #FFFFFF; margin: 0;">Animal Lovers Forum</h2>
</div>
<!-- 内容 -->
<div style="padding-top: 10px; padding-bottom: 10px;">
    <div style="background-color: snow; padding: 20px;">
        <div>
            <h3>尊敬的用户:您好!</h3>
            <p>说明:您现在正在进行敏感操作,为了确保您的账户安全,我们将通过邮件对您进行身份验证。</p>
            <p th:text="${message}"></p>
            <div>
                <h4>本次的验证码为:</h4>
                <div style="background-color: #EBEEF5; padding: 10px;">
                    <h3 th:text="${code}"></h3>
                </div>
                <h4>有效期为5分钟</h4>
            </div>
            <p style="margin-top: 15px;">发件人:</p>
        </div>
    </div>
</div>
<!-- 页底 -->
<div style="padding: 10px; text-align: center; background-color: #2F4056;">
    <p style="margin: 0; color: #FFFFFF;">Copyright © 2023 <a href="https://www.ikate.xyz/" style="color: #FFFFFF;"></a> All Rights Reserved.</p>
</div>

</body>

</html>

发送服务类

@Service
public class SendServiceImpl implements SendService {

    private static final Logger logger = LoggerFactory.getLogger(SendServiceImpl.class);
    @Resource
    private JavaMailSender mailSender;

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

    @Resource
    TemplateEngine templateEngine;
	@Override
    public boolean sendRegisterMail(String mail, String account) {
        Context context = new Context();
        String key = "register_"+ mail + account;
        String code = VerifyCodeUtil.generator();
        context.setVariable("message", Constant.REGISTER_VERIFY_NOTICE);
        context.setVariable("code",code);
        context.setVariable("username","qwe");
        String content = templateEngine.process("register",context);
        try {
            MimeMessageHelper mimeMessageHelper = getMimeMessageHelper(mail,content, Constant.REGISTER_VERIFY_SUBJECT);
            redisService.setString(key, code,Constant.REGISTER_VERIFY_CODE_EXPIRE);
            new Thread(()-> {
                try {
                    mailSender.send(mimeMessageHelper.getMimeMessage());
                }
                catch (MailException mailException){
                    mailException.printStackTrace();
                }
            }).start();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            redisService.delete(key);
        }
        return false;
    }
    private MimeMessageHelper getMimeMessageHelper(String to, String content, String subject) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message);
        mimeMessageHelper.setFrom(from);
        mimeMessageHelper.setTo(to);
        mimeMessageHelper.setSubject(subject);
        mimeMessageHelper.setText(content,true);
        return mimeMessageHelper;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值