package cc.mrbird.febs.common.utils; 
 | 
  
 | 
  
 | 
import cn.hutool.core.date.DatePattern; 
 | 
import cn.hutool.core.date.DateUtil; 
 | 
import net.sf.json.JSONObject; 
 | 
import org.apache.http.HttpEntity; 
 | 
import org.apache.http.HttpResponse; 
 | 
import org.apache.http.client.methods.HttpGet; 
 | 
import org.apache.http.client.methods.HttpPost; 
 | 
import org.apache.http.entity.ContentType; 
 | 
import org.apache.http.entity.mime.MultipartEntityBuilder; 
 | 
import org.apache.http.impl.client.CloseableHttpClient; 
 | 
import org.apache.http.impl.client.HttpClientBuilder; 
 | 
import org.apache.http.protocol.HTTP; 
 | 
import org.apache.http.util.EntityUtils; 
 | 
  
 | 
import java.io.IOException; 
 | 
import java.util.Date; 
 | 
import java.util.Map; 
 | 
import java.util.TreeMap; 
 | 
  
 | 
/** 
 | 
 * 邮件发送 
 | 
 * 
 | 
 * @author wzy 
 | 
 * @date 2020-05-27 
 | 
 **/ 
 | 
public class SubMailSend { 
 | 
  
 | 
    /** 
 | 
     * 时间戳接口配置 
 | 
     */ 
 | 
    public static final String TIMESTAMP = "https://api.mysubmail.com/service/timestamp"; 
 | 
    /** 
 | 
     * API 请求接口配置 
 | 
     */ 
 | 
    private static final String URL = "https://api.mysubmail.com/mail/xsend"; 
 | 
  
 | 
    public static final String TYPE_MD5 = "md5"; 
 | 
    public static final String TYPE_SHA1 = "sha1"; 
 | 
  
 | 
    private static final String APP_ID = "16082"; 
 | 
    private static final String APP_KEY = "f34c792a1112c16c190ed7190d386c4f"; 
 | 
    private static final String FROM = "hibit@submail.hibit.cc"; 
 | 
    private static final String SIGN_TYPE = ""; 
 | 
  
 | 
    /** 
 | 
     * 发送验证码邮件 
 | 
     * 
 | 
     * @param to   对象 
 | 
     * @param code 验证码 
 | 
     * @return true or false 
 | 
     */ 
 | 
    public static boolean sendMail(String to, String code) { 
 | 
        JSONObject vars = new JSONObject(); 
 | 
        vars.put("code", code); 
 | 
  
 | 
        String project = "CVj6P"; 
 | 
        return request(vars, project, to); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 发送充值成功邮件 
 | 
     * 
 | 
     * @param to      对象 
 | 
     * @param time    成功时间 
 | 
     * @param orderNo 订单编号 
 | 
     * @return true or false 
 | 
     */ 
 | 
    public static boolean sendRechargeMail(String to, String time, String orderNo) { 
 | 
        JSONObject vars = new JSONObject(); 
 | 
        vars.put("time", time); 
 | 
        vars.put("orderNo", orderNo); 
 | 
        String project = "4DvTC2"; 
 | 
        return request(vars, project, to); 
 | 
    } 
 | 
  
 | 
    public static boolean sendWithdrawalMail(String to, String time) { 
 | 
        JSONObject vars = new JSONObject(); 
 | 
        vars.put("time", time); 
 | 
        String project = "e3BO91"; 
 | 
        return request(vars, project, to); 
 | 
    } 
 | 
  
 | 
  
 | 
    private static boolean request(JSONObject vars, String project, String to) { 
 | 
        TreeMap<String, Object> requestData = new TreeMap<String, Object>(); 
 | 
        requestData.put("appid", APP_ID); 
 | 
        requestData.put("project", project); 
 | 
        requestData.put("to", to); 
 | 
        requestData.put("from", FROM); 
 | 
        if (!vars.isEmpty()) { 
 | 
            requestData.put("vars", vars.toString()); 
 | 
        } 
 | 
  
 | 
        MultipartEntityBuilder builder = MultipartEntityBuilder.create(); 
 | 
        @SuppressWarnings("deprecation") 
 | 
        ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8); 
 | 
        for (Map.Entry<String, Object> entry : requestData.entrySet()) { 
 | 
            String key = entry.getKey(); 
 | 
            Object value = entry.getValue(); 
 | 
            if (value instanceof String) { 
 | 
                builder.addTextBody(key, String.valueOf(value), contentType); 
 | 
            } 
 | 
        } 
 | 
        if (SIGN_TYPE.equals(TYPE_MD5) || SIGN_TYPE.equals(TYPE_SHA1)) { 
 | 
            String timestamp = getTimestamp(); 
 | 
            requestData.put("timestamp", timestamp); 
 | 
            requestData.put("sign_type", SIGN_TYPE); 
 | 
            String signStr = APP_ID + APP_KEY + RequestEncoder.formatRequest(requestData) + APP_ID + APP_KEY; 
 | 
  
 | 
            builder.addTextBody("timestamp", timestamp); 
 | 
            builder.addTextBody("sign_type", SIGN_TYPE); 
 | 
            builder.addTextBody("signature", RequestEncoder.encode(SIGN_TYPE, signStr), contentType); 
 | 
        } else { 
 | 
            builder.addTextBody("signature", APP_KEY, contentType); 
 | 
        } 
 | 
  
 | 
        HttpPost httpPost = new HttpPost(URL); 
 | 
        httpPost.addHeader("charset", "UTF-8"); 
 | 
        httpPost.setEntity(builder.build()); 
 | 
        try { 
 | 
            CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().build(); 
 | 
            HttpResponse response = closeableHttpClient.execute(httpPost); 
 | 
            HttpEntity httpEntity = response.getEntity(); 
 | 
            if (httpEntity != null) { 
 | 
                String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); 
 | 
                if ("success".equals(JSONObject.fromObject(jsonStr).getString("status"))) { 
 | 
                    return true; 
 | 
                } 
 | 
            } 
 | 
        } catch (IOException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return false; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 获取时间戳 
 | 
     * 
 | 
     * @return 
 | 
     */ 
 | 
    private static String getTimestamp() { 
 | 
        CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().build(); 
 | 
        HttpGet httpget = new HttpGet(TIMESTAMP); 
 | 
        try { 
 | 
            HttpResponse response = closeableHttpClient.execute(httpget); 
 | 
            HttpEntity httpEntity = response.getEntity(); 
 | 
            String jsonStr = EntityUtils.toString(httpEntity, "UTF-8"); 
 | 
            if (jsonStr != null) { 
 | 
                JSONObject json = JSONObject.fromObject(jsonStr); 
 | 
                return json.getString("timestamp"); 
 | 
            } 
 | 
            closeableHttpClient.close(); 
 | 
        } catch (IOException e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
  
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
//        System.out.println(sendMail("546766039@qq.com", "123456")); 
 | 
  
 | 
        System.out.println(sendRechargeMail("546766039@qq.com", DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN), "123456")); 
 | 
    } 
 | 
} 
 |