peter
2025-10-31 1bd0b541ff0a503007d02465bec828a52aca1142
邮箱验证码
4 files modified
132 ■■■■■ changed files
src/main/java/com/nq/controller/UserApiController.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/utils/email/GmailSender.java 116 ●●●●● patch | view | raw | blame | history
src/main/resources/application.properties 2 ●●● patch | view | raw | blame | history
src/main/resources/application.yml 8 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/controller/UserApiController.java
@@ -46,6 +46,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -98,7 +99,10 @@
            String code = GmailSender.generateSecureSixDigitCode();
            String keys = "emailCode:" + email;
            RedisShardedPoolUtils.setEx(keys, code, 60);
            GmailSender.sendEmail(email,"verification code",code);
            //谷歌
//            GmailSender.sendEmail(email,"verification code",code);
            //阿里邮箱
            GmailSender.sendEmailAli(email,"verification code",code);
            return ServerResponse.createBySuccess("发送成功!",request);
        }catch (Exception e){
            e.printStackTrace();
src/main/java/com/nq/utils/email/GmailSender.java
@@ -1,9 +1,26 @@
package com.nq.utils.email;
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;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
@@ -13,6 +30,105 @@
 **/
public class GmailSender {
    private static final String API_URL = "https://www.aoksend.com/index/api/send_email";
    public static void aokSend(String to, String subject, String body) {
        // 创建一个CloseableHttpClient实例
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            // 创建一个HttpPost实例
            HttpPost httpPost = new HttpPost(API_URL);
            // 创建一个参数列表
            List<NameValuePair> params = new ArrayList<>();
            params.add(new BasicNameValuePair("app_key", ""));
            params.add(new BasicNameValuePair("template_id", ""));
            params.add(new BasicNameValuePair("to", ""));
            params.add(new BasicNameValuePair("reply_to", ""));
            params.add(new BasicNameValuePair("alias", ""));
            params.add(new BasicNameValuePair("data", "{\"name\":\"张三\",\"address\":\"深圳\"}"));
            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");
                System.out.println("Response: " + responseBody);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void sendEmailAli(String to, String subject, String body) {
        // 初始化邮件发送器
        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        // 设置邮箱服务器配置
        mailSender.setHost("smtp.mxhichina.com");
        mailSender.setPort(465);
        mailSender.setUsername("ipcptvzpd@candyyun.com");
        mailSender.setPassword("hdj$KDL#994");
        mailSender.setProtocol("smtp");
        mailSender.setDefaultEncoding("UTF-8");
        // 设置JavaMail属性
        Properties props = mailSender.getJavaMailProperties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.ssl.enable", "true");
        // 移除重复的socketFactory配置,避免冲突
        try {
            SimpleMailMessage message = new SimpleMailMessage();
            message.setFrom("ipcptvzpd@candyyun.com");
            message.setTo(to);
            message.setSubject(subject);
            message.setText(body);
            mailSender.send(message);
            System.out.println("验证码邮件发送成功!");
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("邮件发送失败", e);
        }
    }
//    public static void sendEmailAli(String to, String subject, String body) {
//        // 初始化邮件发送器
//        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
//
//        // 设置邮箱服务器配置
//        mailSender.setHost("smtp.mxhichina.com"); // 阿里企业邮箱SMTP服务器
//        mailSender.setPort(465); // SSL端口
//        mailSender.setUsername("ipcptvzpd@candyyun.com"); // 发件邮箱
//        mailSender.setPassword("g83r022ll6"); // 邮箱密码或授权码
//        mailSender.setProtocol("smtp");
//        mailSender.setDefaultEncoding("UTF-8");
//
//        // 设置JavaMail属性
//        Properties props = mailSender.getJavaMailProperties();
//        props.put("mail.smtp.auth", "true");
//        props.put("mail.smtp.ssl.enable", "true");
//        props.put("mail.smtp.socketFactory.port", "465");
//        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
//        props.put("mail.smtp.socketFactory.fallback", "false");
//
//        try {
//            SimpleMailMessage message = new SimpleMailMessage();
//            message.setFrom("ipcptvzpd@candyyun.com"); // 发件人
//            message.setTo(to);
//            message.setSubject(subject);
//            message.setText(body);
//
//            mailSender.send(message);
//            System.out.println("验证码邮件发送成功!");
//        } catch (Exception e) {
//            e.printStackTrace();
//            throw new RuntimeException("邮件发送失败", e);
//        }
//    }
    public static void sendEmail(String to, String subject, String body) {
        // 发件人Gmail地址
        String from = "coinzne.com@gmail.com";
src/main/resources/application.properties
@@ -21,7 +21,7 @@
redis1.ip=localhost
#redis1.port=6380
redis1.port=6380
redis1.port=6379
redis1.pwd=
redis1.timeout=10000
redis.max.total=50
src/main/resources/application.yml
@@ -106,7 +106,7 @@
    # 地址
    host: localhost
    # 端口,默认为6379
    port: 6380
    port: 6379
#    port: 6380
    # 数据库索引
    database: 2
@@ -127,11 +127,11 @@
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:6306/us?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#    url: jdbc:mysql://127.0.0.1:6306/us?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#    url: jdbc:mysql://127.0.0.1:6306us?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
#    url: jdbc:mysql://127.0.0.1:3306/trading_order_1024?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    url: jdbc:mysql://127.0.0.1:3306/trading_order_1024?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: root
    password: Err;2[eoGFUriwdgr
    password: 123456
    druid:
      # 初始连接数
      initialSize: 5