头图

本文介绍如何引用第三方API AoKSend来进行发送邮箱验证码
参考:
https://www.aoksend.com/doc/?id=84

首先第一步。在aokSend注册账号。

第二步,充钱(可以zfb)购买邮件数,我买的是5W封。

第三步:

添加并配置发信域名:通常以mail + 域名开始

填写有关的发件人信息

进行DNS解析:(作者采用的是阿里云DNS解析)

点击齿轮图标会弹出需要进行配置的,有txt记录,mx记录,a记录等,我们在阿里云进行解析

第四步:

建立发信邮箱
在发信域名成功建立并通过审核后新建填写相关信息即可

第五步:

建立邮件内容模板

这里的{{}}变量是我们程序生成填充的内容。下面会有讲述。

第六步

在发信域名、邮箱成功建立,成功建立邮件内容模板后。
先记得保存一下自己的app_id (key) 和 内容模板id(key)



最后一步:程序接入

引入依赖:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version> <!-- 确保使用最新版本 -->
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.14</version> <!-- 确保使用最新版本 -->
</dependency>
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version> 
</dependency>

实际java代码

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
private static final String API_URL ="https://www.aoksend.com/index/api/send_email";
@RequestMapping("/getEmail")
public Result getEmail(String email){
    try{
        //TODO 邮箱校验
        if(StringUtils.isEmpty(email)){
            return Result.fail("请填写邮箱");
        }
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 创建一个HttpPost实例
        HttpPost httpPost = new HttpPost(API_URL);
        // 创建一个参数列表
        List<NameValuePair> params = new ArrayList<>();
       
        //发信邮箱的key
        params.add(new BasicNameValuePair("app_key", ""));

     
        //邮件模板id
        params.add(new BasicNameValuePair("template_id", ""));

        params.add(new BasicNameValuePair("to", email));
        //params.add(new BasicNameValuePair("reply_to", ""));
        //params.add(new BasicNameValuePair("alias", ""));
        EmailSendDto emailSendDto = new EmailSendDto();
        //生成6位随机数
        String checkCode =  ((int)((Math.random()*9+1)*10000)) + "";
        emailSendDto.setCheckCode(checkCode);
        // 获取当前日期
        LocalDate currentDate = LocalDate.now();
        // 定义日期格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        // 将日期格式化为字符串
        String formattedDate = currentDate.format(formatter);
        emailSendDto.setNowDate(formattedDate);
        params.add(new BasicNameValuePair("data", JSON.toJSONString(emailSendDto)));
        UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(params, "UTF-8");
        httpPost.setEntity(formEntity);
        // 发送请求并获取响应
        HttpResponse response = httpClient.execute(httpPost);
        // 读取响应内容
        HttpEntity responseEntity = response.getEntity();
        if (responseEntity != null) {
            String responseBody = EntityUtils.toString(responseEntity, "UTF-8");
          
            //存入redis
            //redisHandler.set(email,checkCode,180);
            return Result.ok(responseBody);
        }
        return Result.fail("验证码获取失败");
    }catch (Exception e){
        return Result.fail(e.getMessage());
    }
}

小全栈工程师小鹿
4 声望0 粉丝

一个菜鸡的全干工程师......