package com.product.admin.util.email;
|
|
import java.io.IOException;
|
|
import com.product.admin.config.CmnConst;
|
import org.springframework.beans.factory.annotation.Value;
|
|
import com.product.core.entity.FieldSetEntity;
|
import com.product.core.exception.BaseException;
|
import com.sendgrid.Content;
|
import com.sendgrid.Email;
|
import com.sendgrid.Mail;
|
import com.sendgrid.Method;
|
import com.sendgrid.Request;
|
import com.sendgrid.Response;
|
import com.sendgrid.SendGrid;
|
|
public class SendGridSendEmail {
|
|
@Value("${sendGrid.mail.user}")
|
private static String sendGridUser;
|
|
@Value("${sendGrid.mail.key}")
|
private static String sendGridKey;
|
|
/**
|
* SendGrid发送邮件
|
* @param addressInfo 收件人信息
|
* @throws BaseException
|
*/
|
public static void sendMail(FieldSetEntity fseMailInfo) throws BaseException {
|
|
|
//发件人,即配置的发件人邮箱地址
|
Email from = new Email(sendGridUser);
|
//收件人邮件地址
|
Email to = new Email(fseMailInfo.getString("addressee"));
|
//邮件主题
|
String subject =fseMailInfo.getString("mail_title");
|
//邮件内容
|
Content content=null;
|
if(fseMailInfo.getString(CmnConst.MAIN_CONTENT).indexOf("</html>")>-1) {
|
content = new Content("text/html", fseMailInfo.getString(CmnConst.MAIN_CONTENT));
|
}else {
|
content = new Content("text/plain", fseMailInfo.getString(CmnConst.MAIN_CONTENT));
|
}
|
Mail mail = new Mail(from, subject, to, content);
|
try {
|
String apiKey = sendGridKey;
|
SendGrid sg = new SendGrid(apiKey);
|
Request request = new Request();
|
request.setMethod(Method.POST);
|
request.setEndpoint("mail/send");
|
request.setBody(mail.build());
|
Response response = sg.api(request);
|
int statCode=response.getStatusCode();
|
if(statCode<200 || statCode>=300) { //发送失败!
|
fseMailInfo.setValue(CmnConst.SEND_STAT, 2);
|
}else { //发送成功
|
fseMailInfo.setValue(CmnConst.SEND_STAT, 1);
|
}
|
} catch (IOException ex) {
|
fseMailInfo.setValue(CmnConst.SEND_STAT, 2);
|
fseMailInfo.setValue("failure_reason", ex.getStackTrace());
|
}
|
fseMailInfo.setValue("smtp_username", sendGridUser);
|
fseMailInfo.setValue("smtp_license_code", sendGridKey);
|
}
|
}
|