首页 > 其他分享 >邮箱发送邮件

邮箱发送邮件

时间:2023-05-26 11:15:03浏览次数:30  
标签:String org 验证码 springframework 发送 import 邮箱 邮件

邮箱发送邮件

前置条件:在springboot中使用邮箱发送邮件

添加依赖

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

设置配置文件(application.yml)

spring:
  mail:
#    smtp服务主机    qq邮箱则为smtp.qq.com    163邮箱是smtp.163.com
    host: smtp.qq.com
#    发送邮件的账户
    username: [email protected]
#    授权码
    password: xxxxxxxxxx
    default-encoding: UTF-8
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
    test-connection: true

生成验证码的工具类

代码:

import java.security.SecureRandom;
import java.util.Random;

/**
 * @Classname VerCodeGenerateUtil
 * @Description 生成验证码工具类
 * @Date 2021/9/7 14:23
 * @Created by DB
 */
public class VerCodeGenerateUtil {
    //验证码包含的字段,可自己设置
    private static final String SYMBOLS = "0123456789ABCDEFGHIGKLMNOPQRSTUVWXYZ";
    private static final Random RANDOM = new SecureRandom();
    //    生成 6 位数的随机数字
    public static String generateVerCode() {
        //	如果是六位,就生成大小为 6 的数组
        char[] numbers = new char[6];
        for (int i = 0; i < numbers.length; i++) {
            numbers[i] = SYMBOLS.charAt(RANDOM.nextInt(SYMBOLS.length()));
        }
        return new String(numbers);
    }
}

实体类

代码:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ToEmail implements Serializable {

    //    邮件接收方,这是一个数组,所以可以一次性发送给多个用户
    private String[] tos;
    //    邮件主题
    private String subject;
    //    邮件内容
    private String content;
}

Controller层

代码:

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * TODO 邮箱验证码
 *
 */
@RestController
@RequestMapping("/email")
@Slf4j
public class EmailController {

    //	引入邮件接口
    @Autowired
    private JavaMailSender mailSender;


    //	获得发件人信息
    @Value("${spring.mail.username}")
    private String username;

    /**
     *
     * @param toEmail 需要发送的对象
     * @return
     */
    @GetMapping("/sendEmail")
    public R<String> commonEmail(ToEmail toEmail) {
        log.info("现在进入到发送验证码了");
//        创建邮件消息
        SimpleMailMessage message = new SimpleMailMessage();

        message.setFrom(username);

        message.setTo(toEmail.getTos());

        String verCode = VerCodeGenerateUtil.generateVerCode();
        message.setSubject("您本次的验证码是:"+verCode);

        message.setText("尊敬的用户,您好:\n"
                + "\n本次请求的邮件验证码为:" + verCode + ",本验证码 5 分钟内效,请及时输入。(请勿泄露此验证码)\n"
                + "\n如非本人操作,请忽略该邮件。\n(这是一封通过自动发送的邮件,请不要直接回复)");

        mailSender.send(message);

        return R.success("发送成功");
    }
}

Postman测试

测试是成功的,有正确收到验证码

image-20230526105102524

标签:String,org,验证码,springframework,发送,import,邮箱,邮件
From: https://www.cnblogs.com/itchen-2002/p/17434173.html

相关文章

  • python 发送微信消息
    python自动化,可以模拟键盘输入,因此,可以控制微信,发送消息,代码如下:1importsys2importpyautogui3importpyperclip4importtime5importconfigparser67"""8安装依赖:9pipinstallpyautoguipyperclippyinstaller1011打包成exe:12pyins......
  • 表格编辑时,根据这一行弹出层显示编辑界面,点击保存时发送请求,请求成功保存好数据到表达
    这是一个网上的列子,一表格,点击编辑时弹出层编辑这一行,点击保存时送请求的完整示例:<template><div><el-table:data="tableData"style="width:100%"><el-table-columnprop="name"label="姓名"></el-table-column>......
  • jrtplib 视频数据发送异常分析记录
    场景之前国标服务推流无人机视频运行一直正常,下午时候只能抓包到信令交互的过程,wireshark没有抓包到视音频数据包排查1怀疑是国标没有收到流媒体转发过来的视音频数据流,导致国标服务无法转发视音频排除:国标日志文件显示已经收到流媒体转发过来的视音频数据流排查2怀疑是国标收到的......
  • Exchange EMS 迁移用户邮箱
    查看邮箱数据库里所有的用户邮箱Get-Mailbox-DatabaseDB01获取邮箱数据库系统邮箱:Get-Mailbox-arbitration-DatabaseDB01将邮箱数据库testDB上的用户邮箱迁移至邮箱数据库testDB2:Get-Mailbox-DatabasetestDB|New-MoveRequest-TargetDatabasetestDB2查看迁移请求完成......
  • Fdog系列(三):使用腾讯云短信接口发送短信,数据库写入,部署到服务器,web收尾篇。
    文章目录1.前言2.使用腾讯云短信接口发送短信3.java连接数据库4.部署到服务器(如果你有的话)目录Fdog系列(一):思来想去,不如写一个聊天软件,那就从仿QQ注册页面开始吧。Fdog系列(二):html写完注册页面之后怎么办,用java写后台响应呀。文章中出现的源码获取方式:评论区留下邮箱地址。创作......
  • 报错问题:谷粒商城关于pubsub、publish报错,无法发送查询品牌信息的请求
    1、npminstall--savepubsub-js2、在src下的main.js中引用:①importPubSubfrom'pubsub-js'②Vue.prototype.PubSub=PubSub ......
  • Kettle发送邮件以及 Could not connect to SMTP host: smtp.qq.com, port: 465,535 Log
    1、新建一个job(作业)2、发送邮件设置2.1邮件服务器设置2.2发件内容设置3、发送执行作业转换4、465端口登录失败问题5、535LoginFail.Pleaseenter问题处理最近开始研究开源的ETL工具Kettle。记录一下发送邮件的功能。1、新建一个job(作业)然后从通用中拖拽START以及发送......
  • 网络流量测试捕获与发送
    https://xeldax.top/article/suricata_notes针对开源IDSSURICATA的实践和超大流量高性能压测针对开源IDSsuricata的实践和超大流量高性能压测suricata介绍pfringebpf和xdp基于pfring的suricata编译最佳实践基于xdp的suricata编译最佳实践如何引入大流量trex初探最......
  • 【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发
    问题描述AzureEventHub支持kafka,所以为了测试消息生产者所在环境与AzureEvent Hub之间发送消息的性能如何,特别使用kafka官方测试生产者,消费者的性能工具:kafka-producer-perf-test.batkafka-consumer-perf-test.bat(.bat表示为Windows系统中运行,.sh表示在Linux系统中远行......
  • 【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发
    问题描述AzureEventHub支持kafka,所以为了测试消息生产者所在环境与AzureEvent Hub之间发送消息的性能如何,特别使用kafka官方测试生产者,消费者的性能工具:kafka-producer-perf-test.batkafka-consumer-perf-test.bat(.bat表示为Windows系统中运行,.sh表示在Linux系......