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("to", to);
|
requestData.put("project", project);
|
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"));
|
}
|
}
|