package com.product;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import javax.ws.rs.core.MediaType;
import com.alibaba.fastjson.JSONObject;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter;
import com.sun.jersey.core.util.MultivaluedMapImpl;
public class MailgunSendEmail {
//////娴嬭瘯璐﹀彿
//private static final String API_KEY = "84d2c563e45e4aa32000a0f608a20e32-cb3791c4-580c662f";
//private static final String DOMAIN = "sandbox425b6a32b61840fa902c2e614f4616fc.mailgun.org";
//////姝e紡璐﹀彿
private static final String API_KEY = "8d52b0a748b20c61331587fa9a3fe6fc-cb3791c4-8cf158ef";
private static final String DOMAIN = "mail.purtato.com";
private static final String API_URI = "https://api.mailgun.net/v3/"+DOMAIN+"/messages";
/**
* 鏅€氶偖浠跺彂閫侊紝涓嶅寘鍚ā鏉�
* @return
* @throws UnirestException
*/
public JsonNode sendSimpleMessage() throws UnirestException {
HttpResponse<JsonNode> request = Unirest.post(API_URI)
.basicAuth("api", API_KEY)
//娴嬭瘯璐﹀彿鍙戜欢浜�
//.queryString("from", "fuller@sandbox425b6a32b61840fa902c2e614f4616fc.mailgun.org")
//姝e紡璐﹀彿鍙戜欢浜�
.queryString("from", "brianho@mail.purtato.com")
//.queryString("to", "b.hokaming@gmail.com")
//.queryString("to", "FullerFB@163.com")
//.queryString("to","370036259@qq.com")
//.queryString("to","brianho1023@yahoo.com")
.queryString("subject", "Mailgun test subject")
.queryString("html","<html>Testing some Mailgun awesomness! 娴嬭瘯娴嬭瘯娴嬭瘯<p/><i>Bruce</i></html>")
//.queryString("text", "Mailgun Testing")
.asJson();
return request.getBody();
}
/**
* 鍖呭惈妯℃澘鐨勯偖浠跺彂閫侊紝棣栧厛鍦╩ailgun绠$悊绔繘琛屾ā鏉块厤缃�
* @return
*/
public static ClientResponse SendSimpleMessage() {
Client client = Client.create();
client.addFilter(new HTTPBasicAuthFilter("api", API_KEY));
WebResource webResource = client.resource("https://api.mailgun.net/v3/mail.purtato.com/messages");
MultivaluedMapImpl formData = new MultivaluedMapImpl();
formData.add("from", "brianho@mail.purtato.com");
formData.add("subject", "Hello Brian Ho");
formData.add("template", "test");
formData.add("h:X-Mailgun-Variables", buildTemplateParameter());
return webResource.type(MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class, formData);
}
/**
* 缁勮mailgun妯℃澘鍚嶇О涓簍est鐨勶紝name銆乺eset_password_url 杩欎袱涓弬鏁拌繘琛屼紶閫掓暟鎹�
* @return
*/
public static String buildTemplateParameter() {
Map<String, Object> map = new HashMap<String,Object>();
map.put("name", "Fuller");
map.put("reset_password_url", "https://www.baidu.com");
return JSONObject.toJSONString(map);
}
@SuppressWarnings("static-access")
public static void main(String[] args) {
MailgunSendEmail latchTest = new MailgunSendEmail();
//////鏅€氭祴璇曞彂閫�
/*
JsonNode jsonNode;
try {
jsonNode = latchTest.sendSimpleMessage();
System.out.println("result......"+jsonNode.toString());
} catch (UnirestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*/
//////閭欢妯℃澘娴嬭瘯鍙戦€�
ClientResponse clientResponse = latchTest.SendSimpleMessage();
System.out.println(clientResponse.getStatus());
//////骞跺彂閭欢鍙戦€佹祴璇�
/*
Runnable taskTemp = new Runnable() {
// 娉ㄦ剰锛屾澶勬槸闈炵嚎绋嬪畨鍏ㄧ殑锛岀暀鍧�
private int iCounter;
@Override
public void run() {
for(int i = 0; i < 5; i++) {
JsonNode jsonNode;
try {
jsonNode = latchTest.sendSimpleMessage();
System.out.println("result......"+jsonNode.toString());
} catch (UnirestException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
iCounter++;
System.out.println(System.nanoTime() + " [" + Thread.currentThread().getName() + "] iCounter = " + iCounter);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
try {
latchTest.startTaskAllInOnce(5, taskTemp);
} catch (InterruptedException e) {
e.printStackTrace();
}
*/
}
public long startTaskAllInOnce(int threadNums, final Runnable task) throws InterruptedException {
final CountDownLatch startGate = new CountDownLatch(1);
final CountDownLatch endGate = new CountDownLatch(threadNums);
for(int i = 0; i < threadNums; i++) {
Thread t = new Thread() {
public void run() {
try {
// 浣跨嚎绋嬪湪姝ょ瓑寰咃紝褰撳紑濮嬮棬鎵撳紑鏃讹紝涓€璧锋秾鍏ラ棬涓�
startGate.await();
try {
task.run();
} finally {
// 灏嗙粨鏉熼棬鍑�1锛屽噺鍒�0鏃讹紝灏卞彲浠ュ紑鍚粨鏉熼棬浜�
endGate.countDown();
}
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
};
t.start();
}
long startTime = System.nanoTime();
System.out.println(startTime + " [" + Thread.currentThread() + "] All thread is ready, concurrent going...");
// 鍥犲紑鍚棬鍙渶涓€涓紑鍏筹紝鎵€浠ョ珛椹氨寮€鍚紑濮嬮棬
startGate.countDown();
// 绛夌瓑缁撴潫闂ㄥ紑鍚�
endGate.await();
long endTime = System.nanoTime();
System.out.println(endTime + " [" + Thread.currentThread() + "] All thread is completed.");
return endTime - startTime;
}
}