Springboot发送邮件

博主介绍:✌全网粉丝3W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅开源项目免费哦(有vue2与vue3版本): 点击这里克隆或者下载 🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

目录

​编辑

一、获取授权码

1、以QQ邮箱为例,页面首部找到设置

二、SpringBoot集成邮件发送

1、环境配置

2、代码编写

三、测试邮件发送


一、获取授权码

1、以QQ邮箱为例,页面首部找到设置

2、开启POP3/SMTP服务

如果服务不是开启状态需要开启,服务开启状态可以点击管理服务去获取授权码。

 

 获取授权码这次本人需要绑定手机号,绑定手机后就可以点击生成授权码

 

二、SpringBoot集成邮件发送

1、环境配置
  • 添加依赖
<!-- springboot 邮件mail -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
            <version>${springboot.version}</version>
        </dependency>
  • application.properties
# 邮件
spring.mail.default-encoding= utf-8
# 配置 SMTP 服务器地址
spring.mail.host= smtp.qq.com
#发送方邮件名
spring.mail.username= xxxx@qq.com
#授权码
spring.mail.password= xxxxxx
  • application.yml(与application.properties任选其一既可)
spring:
  #邮箱基本配置
  mail:
    #配置smtp服务主机地址
    host: smtp.qq.com
    #发送者邮箱
    username: xxxxxxx@qq.com
    #配置密码,注意不是真正的密码,而是刚刚申请到的授权码
    password: xxxxxxxxxxx
    #端口号465或587
    port: 587
    #默认的邮件编码为UTF-8
    default-encoding: UTF-8
    #其他参数
    properties:
      mail:
        # 配置SSL 加密工厂
        smtp:
          ssl:
              # 本地测试,先放开ssl
             enable: false
             required: false
          socketFactory:
            class: javax.net.ssl.SSLSocketFactory
        # 开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误
        debug: true
2、代码编写
  • MailRequest实体
package com.ceam.exam.dto;

import java.io.Serializable;

/**
 * @author CeaM
 * 2023/7/17
 */
public class MailRequest implements Serializable {
    /**
     * 接收人
     */
    private String sendTo;

    /**
     *  邮件主题
     */
    private String subject;

    /**
     *  邮件内容
     */
    private String text;

    /**
     *  附件路径
     */
    private String filePath;

    public String getSendTo() {
        return sendTo;
    }

    public void setSendTo(String sendTo) {
        this.sendTo = sendTo;
    }

    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getFilePath() {
        return filePath;
    }

    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
}
  • SendMailService
package com.ceam.web.components.service;

import com.ceam.exam.dto.MailRequest;

/**
 * @author CeaM
 * 2023/7/17
 */
public interface SendMailService {

    /**
     * 简单文本邮件
     *
     * @param mailRequest
     * @return
     */
    void sendSimpleMail(MailRequest mailRequest);


    /**
     * Html格式邮件,可带附件
     *
     * @param mailRequest
     * @return
     */
    void sendHtmlMail(MailRequest mailRequest);
}
  • SendMailServiceImpl
package com.ceam.web.components.service.impl;

import com.ceam.common.utils.AssertUtil;
import com.ceam.exam.dto.MailRequest;
import com.ceam.web.components.service.SendMailService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;

/**
 * @author CeaM
 * 2023/7/17
 */
@Slf4j
@Service
public class SendMailServiceImpl implements SendMailService {

    // 注入邮件工具类
    @Resource
    private JavaMailSender javaMailSender;

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

    public void checkMail(MailRequest mailRequest) {
        AssertUtil.isNotEmpty(mailRequest,"邮件请求不能为空");
        AssertUtil.isNotBlank(mailRequest.getSendTo(), "邮件收件人不能为空");
        AssertUtil.isNotBlank(mailRequest.getSubject(), "邮件主题不能为空");
        AssertUtil.isNotBlank(mailRequest.getText(), "邮件收件人不能为空");
    }

    @Override
    public void sendSimpleMail(MailRequest mailRequest) {
        SimpleMailMessage message = new SimpleMailMessage();
        checkMail(mailRequest);
        // 邮件发件人
        message.setFrom(sendMailer);
        // 邮件收件人 1或多个
        message.setTo(mailRequest.getSendTo().split(","));
        // 邮件主题
        message.setSubject(mailRequest.getSubject());
        // 邮件内容
        message.setText(mailRequest.getText());
        // 邮件发送时间
        message.setSentDate(new Date());

        javaMailSender.send(message);
        log.info("发送邮件成功:{}->{}",sendMailer,mailRequest.getSendTo());
    }



    @Override
    public void sendHtmlMail(MailRequest mailRequest) {
//        MimeMessage message = javaMailSender.createMimeMessage();
//        checkMail(mailRequest);
//        try {
//            MimeMessageHelper helper = new MimeMessageHelper(message,true);
//            //邮件发件人
//            helper.setFrom(sendMailer);
//            //邮件收件人 1或多个
//            helper.setTo(mailRequest.getSendTo().split(","));
//            //邮件主题
//            helper.setSubject(mailRequest.getSubject());
//            //邮件内容
//            helper.setText(mailRequest.getText(),true);
//            //邮件发送时间
//            helper.setSentDate(new Date());
//
//            String filePath = mailRequest.getFilePath();
//            if (StringUtils.hasText(filePath)) {
//                FileSystemResource file = new FileSystemResource(new File(filePath));
//                String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
//                helper.addAttachment(fileName,file);
//            }
//            javaMailSender.send(message);
//            log.info("发送邮件成功:{}->{}",sendMailer,mailRequest.getSendTo());
//        } catch (MessagingException e) {
//            log.error("发送邮件时发生异常!",e);
//        }
    }
}
  • SendMailController
@RestController
@RequestMapping("/send-mail")
@Api(value = "发送邮件接口",tags = {"发送邮件接口"})
public class SendMailController {
    @Autowired
    private SendMailService sendMailService;

    @PostMapping("/simple")
    public void SendSimpleMessage(@RequestBody MailRequest mailRequest) {
        sendMailService.sendSimpleMail(mailRequest);
    }

    @PostMapping("/html")
    public void SendHtmlMessage(@RequestBody MailRequest mailRequest) { sendMailService.sendHtmlMail(mailRequest);}
}

三、测试邮件发送

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot发送邮件需要使用JavaMailSender接口来实现。以下是一个简单的示例代码: 首先,确保在你的项目中添加了相关依赖。在pom.xml文件中添加以下代码: ```xml <dependencies> <!-- Spring Boot Starter Mail --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> </dependencies> ``` 然后,在你的应用程序中创建一个类来发送邮件。例如,你可以创建一个名为EmailSender的类: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Component; @Component public class EmailSender { @Autowired private JavaMailSender javaMailSender; public void sendEmail(String to, String subject, String text) { SimpleMailMessage message = new SimpleMailMessage(); message.setTo(to); message.setSubject(subject); message.setText(text); javaMailSender.send(message); } } ``` 在上述示例中,我们使用了@Autowired注解来自动注入JavaMailSender对象,该对象是由Spring Boot自动配置提供的。 现在,你可以在你的应用程序的任何地方使用EmailSender类来发送邮件。例如,你可以在控制器中使用它: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class EmailController { @Autowired private EmailSender emailSender; @PostMapping("/sendEmail") public String sendEmail(@RequestBody EmailRequest emailRequest) { emailSender.sendEmail(emailRequest.getTo(), emailRequest.getSubject(), emailRequest.getText()); return "Email sent successfully!"; } } ``` 上述示例中,我们创建了一个名为EmailController的REST控制器,它接收一个包含收件人、主题和内容的EmailRequest对象,并使用EmailSender发送邮件。 请注意,你需要适当配置你的邮件服务器信息。在Spring Boot的application.properties(或application.yml)文件中添加以下配置: ```yaml spring.mail.host=your-mail-server spring.mail.port=your-mail-server-port spring.mail.username=your-username spring.mail.password=your-password spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true ``` 以上是一个简单的示例,你可以根据你的实际需求进行修改和扩展。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡布奇诺-海晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值