SpringBoot项目详细整合邮箱服务

springboot 版本:2.6.3

Java版本:1.8

一、应用场景

  • 用户注册发送激活邮箱

  • 注册登录时用邮箱接收验证码

  • 用户密码重置

  • 向用户发送相关系统消息

二、添加依赖

<!--    邮箱 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

三、邮箱配置:以qq邮箱为例

  1. 在qq邮箱中开启smtp服务并获取授权码。在设置->账号路径下。

    在这里插入图片描述

  2. 在spingboot中配置邮件信息

    spring:
      # 邮箱验证配置
      mail:
        host: smtp.qq.com # smtp 服务主机
        protocol: smtp  # smtp 协议
        default-encoding: UTF-8
        username: xxx@qq.com # 邮箱
        password: xxx   # 授权码
        nickname: xxx # 发邮件时显示的昵称
        test-connection: false  
        properties:
          mail:
            smtp:
              auth: true
              starttls:
                enable: true
                required: true
    

    注: test-connection 字段代表是否在项目启动时验证邮箱服务是否可用,如果设置成true,则只有在邮箱服务可用时项目才能启动成功;而设置成false 时只有在使用邮箱服务时才会检测邮箱服务是否可用。

    四、邮箱API使用

    1. SimpleMailMessage

      邮件类,用来设置邮件的各部分内容,常用方法:

      // 设置发送人信息
      public void setFrom(String from) {
              this.from = from;
          }
      // 设置收件人信息:邮箱
       public void setTo(String to);
      // 设置邮件主题
      public void setSubject(String subject) {
              this.subject = subject;
          }
      // 设置邮件内容
      public void setText(String text) {
              this.text = text;
          }
      
    2. JavaMailSender 接口

      发送邮件的类,可以看到它的send 方法接收的都是MimeMessage 类型,而我们的是SimpleMailMessage类型,其实是使用的MailSender 接口中的方法。

      public interface JavaMailSender extends MailSender {
          MimeMessage createMimeMessage();
      
          MimeMessage createMimeMessage(InputStream contentStream) throws MailException;
      
          void send(MimeMessage mimeMessage) throws MailException;
      
          void send(MimeMessage... mimeMessages) throws MailException;
      
          void send(MimeMessagePreparator mimeMessagePreparator) throws MailException;
      
          void send(MimeMessagePreparator... mimeMessagePreparators) throws MailException;
      }
      
      public interface MailSender {
          void send(SimpleMailMessage simpleMessage) throws MailException;
      
          void send(SimpleMailMessage... simpleMessages) throws MailException;
      }
      

    五、验证邮箱服务

    1. 编写一个发送验证码的controller

      @RestController
      @Api(value = "v1", tags = "6.GeoFriend 邮件相关接口")
      @RequestMapping("/api/v1")
      public class EmailAPI {
      
          @Autowired
          private JavaMailSender mailSender;
      
          @Autowired
          private RedisGeoDao redisGeoDao;
      
          /**
           * 邮箱
           */
          @Value("${spring.mail.username}")
          private String sender;
      
          /**
           * 获取发件人昵称
           */
          @Value("${spring.mail.nickname}")
          private String nickname;
      
      
          /**
           * 发送验证码
           * @param email 收件人
           * @return
           */
          @PostMapping("/email/code")
          public ResultBean sendCode(@RequestBody EmailParam email){
      
              if(!NumberUtil.isEmail(email.getEmail())){
                  return ResultBeanGenerator.error(ServiceResultEnum.LOGIN_NAME_IS_NOT_EMAIL.getResult());
              }
              SimpleMailMessage message = new SimpleMailMessage();
              message.setFrom(nickname + '<' + sender + '>');
              message.setTo(email.getEmail());
              message.setSubject("请查收验证码~");
      
              String code = RandomUtil.randomNumbers(6);
              String content = "【验证码】您的验证码为:" + code + " 。 验证码五分钟内有效,逾期作废。\n\n\n" +
                      "------------------------------\n\n\n" +
                      "更多信息可访问:\n\n" +
                      "https://blog.csdn.net/qq_44957574?type=blog\n\n";
      
              message.setText(content);
              mailSender.send(message);
      
              redisGeoDao.addCode(email.getEmail(), code);
      
              return ResultBeanGenerator.success("验证码发送成功!");
          }
      }
      
      1. 使用postman发送请求

        在这里插入图片描述

      2. 查看邮箱是否发送

      在这里插入图片描述

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
springboot整合电子邮箱需要使用javamail来进行操作。首先,你需要在项目的pom.xml文件中导入spring-boot-starter-mail依赖。然后,你需要配置邮件服务器的相关信息,包括主机、端口、用户名和密码等。接下来,你可以使用JavaMailSender类来发送电子邮件。你可以设置邮件的发送者、接收者、主题、内容等信息。最后,调用send方法发送邮件即可。 需要注意的是,要确保你已经掌握了javamail的基本操作,这样才能更好地理解springboot整合javamail所简化的操作。整合后,你只需要关注邮件的内容和配置,而不需要关心底层的具体实现细节。 请参考以下步骤进行springboot整合电子邮箱: 1. 在项目的pom.xml文件中添加spring-boot-starter-mail依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> ``` 2. 配置邮件服务器的相关信息,在application.properties或application.yml文件中添加以下配置: ``` spring.mail.host=你的邮件服务器主机名 spring.mail.port=你的邮件服务器端口号 spring.mail.username=你的邮箱用户名 spring.mail.password=你的邮箱密码 ``` 3. 创建一个邮件发送服务类,并注入JavaMailSender对象: ``` @Autowired private JavaMailSender javaMailSender; ``` 4. 使用JavaMailSender对象发送邮件,设置邮件的发送者、接收者、主题、内容等信息: ``` SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("发件人邮箱"); message.setTo("收件人邮箱"); message.setSubject("邮件主题"); message.setText("邮件内容"); javaMailSender.send(message); ``` 通过上述步骤,你就可以在springboot中成功整合电子邮箱功能了。记得替换相关的信息,例如邮件服务器的主机名、端口号、用户名和密码,以及邮件的发送者和接收者的邮箱地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值