package com.xcong.excoin.utils.mail;
|
|
|
import net.sf.json.JSONObject;
|
import org.apache.http.HttpEntity;
|
import org.apache.http.HttpResponse;
|
import org.apache.http.client.ClientProtocolException;
|
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.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";
|
|
public static boolean sendMail(String to, String code) {
|
TreeMap<String, Object> requestData = new TreeMap<String, Object>();
|
JSONObject vars = new JSONObject();
|
vars.put("code", code);
|
|
String appid = "16082";
|
String appkey = "f34c792a1112c16c190ed7190d386c4f";
|
String project = "fMBQk1";
|
String signtype = "";
|
String from = "ex@submail.excoin.site";
|
|
requestData.put("appid", appid);
|
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 (signtype.equals(TYPE_MD5) || signtype.equals(TYPE_SHA1)) {
|
String timestamp = getTimestamp();
|
requestData.put("timestamp", timestamp);
|
requestData.put("sign_type", signtype);
|
String signStr = appid + appkey + RequestEncoder.formatRequest(requestData) + appid + appkey;
|
|
builder.addTextBody("timestamp", timestamp);
|
builder.addTextBody("sign_type", signtype);
|
builder.addTextBody("signature", RequestEncoder.encode(signtype, signStr), contentType);
|
} else {
|
builder.addTextBody("signature", appkey, 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 (ClientProtocolException e) {
|
e.printStackTrace();
|
} 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 (ClientProtocolException e) {
|
e.printStackTrace();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
|
return null;
|
}
|
|
public static void main(String[] args) {
|
System.out.println(sendMail("123@123.com", "123456"));
|
}
|
}
|