package com.venky.swf.plugins.mail.core.grid;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.codemonkey.simplejavamail.Email;
import org.codemonkey.simplejavamail.Recipient;
import com.venky.core.string.StringUtil;
import com.venky.core.util.ObjectUtil;
import com.venky.swf.plugins.mail.core.Mailer;
import com.venky.swf.routing.Config;
public class SendGridMailer implements Mailer{
private static final String WSURL = "http://sendgrid.com/api/mail.send.xml";
public SendGridMailer() {
}
public void sendMail(Email mail) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(WSURL);
List<NameValuePair> attributes = new ArrayList<NameValuePair>();
try {
{
int i = 0 ;
for (Recipient r : mail.getRecipients()){
attributes.add(new BasicNameValuePair("to["+ i +"]", r.getAddress()));
attributes.add(new BasicNameValuePair("toname["+ i +"]", r.getName()));
i++;
}
}
attributes.add(new BasicNameValuePair("subject", mail.getSubject()));
if (!ObjectUtil.isVoid(mail.getText())){
attributes.add(new BasicNameValuePair("text", mail.getText()));
}else if (!ObjectUtil.isVoid(mail.getTextHTML())){
attributes.add(new BasicNameValuePair("html", mail.getTextHTML()));
}
attributes.add(new BasicNameValuePair("from", Config.instance().getProperty("swf.sendmail.user")));
attributes.add(new BasicNameValuePair("fromname", Config.instance().getProperty("swf.sendmail.user.name")));
String sendGridAccountUserName = Config.instance().getProperty("swf.sendmail.account");
String sendGridAccountPassword = Config.instance().getProperty("swf.sendmail.password");
attributes.add(new BasicNameValuePair("api_user",sendGridAccountUserName));
attributes.add(new BasicNameValuePair("api_key",sendGridAccountPassword));
post.setEntity(new UrlEncodedFormEntity(attributes));
HttpResponse response = client.execute(post);
String sResponse = StringUtil.read(response.getEntity().getContent());
Config.instance().getLogger(getClass().getName()).info(sResponse);
}catch (IOException e) {
Config.instance().printStackTrace(getClass(), e);
}
}
}