共计 3613 个字符,预计需要花费 10 分钟才能阅读完成。
SendGrid 对接教程(Java 版本)
前言
最近因为工作须要,须要接入 SendGrid 邮件渠道商
本人也在网络上找了很多材料,发现大部分的材料都是零零碎碎的,并没有一篇残缺的教程。
本人也是摸索了一段时间,因而将对接流程分享给大家,也算留个笔记,当前或者本人也能用得着 (如有错别字,请留言纠正,感恩)。
另外,因为自己次要从事与 Java 语言开发,因而本文次要以 Java 代码为案例,其余语言的应该也能够起到借鉴的作用
对接依赖
首先是 maven 依赖
<dependency>
<groupId>com.sendgrid</groupId>
<artifactId>sendgrid-java</artifactId>
<version>4.9.0</version>
</dependency>
只须要依赖单个 jar 包即可,无需其余的依赖
Sender 认证
认证地址:https://app.sendgrid.com/sett…
认证的次要作用就是,你认证后,才会有具体邮件下发 sneder,认证分两种形式认证
集体认证
集体认证的话,发送者就是固定的,比方:
你认证了 achuang@163.com 这个 sender,那么发送者只能是 achuang@163.com
域名认证
个别公司外部会应用这种形式来认证,比方:
认证了域名 achuang.com,那么 a@achaung.com、b@achuang.com 等以认证域名结尾的发送者都能够作为发送者来下发邮件
AppKey 设置
在应用 api 前,咱们须要配置生成一个 appKey
设置 appKey 地址 (须要登录):https://app.sendgrid.com/sett…
因为波及到后盾操作,我在这就不截图了,其实也很简略,如有问题请留言。
SMTP 对接
对于对接 api,要做一个简略的阐明
对接 api 也分为不同的版本:V2 版本、V3 版本
尽管分不同的版本,然而好消息是,咱们只须要引入上述一个依赖即可,接下来咱们看下两种形式别离如何应用
V2 版本
private static void sendEmail() throws IOException {
String apiKey = "后盾的 appkey,具体查看 appKey 的设置";
Email from = new Email("发送者邮箱");
String subject = "邮件主题";
Email to = new Email("收件人邮箱");
Content content = new Content("text/html", "<h1>and easy to do anywhere, even with Java</h1>");
Mail mail = new Mail(from, subject, to, content);
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);// 发送申请
System.out.println(response.getStatusCode());
System.out.println(response.getBody());
System.out.println(response.getHeaders());
}
V3 版本
@SneakyThrows
private static void sendEmailV3() {
String apiKey = "后盾的 appkey,具体查看 appKey 的设置";
SendGrid sg = new SendGrid(apiKey);
Request request = new Request();
request.setMethod(Method.POST);
request.setEndpoint("/mail/send");
// Create mail
Mail mail = new Mail();
Personalization personalization1 = new Personalization();
personalization1.addTo(new Email("收件人邮件地址", "收件人名称"));
personalization1.addCustomArg("version", "1.0");// 留神:自定义参数,会在回调的时候返回
mail.addPersonalization(personalization1);
mail.setFrom(new Email("发件人邮箱", " 发件人名称));
mail.setSubject("Your Example Order Confirmation");
// 内容对象
Content content = new Content();
content.setType("text/html");
content.setValue("<p>Hello from Twilio SendGrid!</p><p>Sending with the email service trusted by developers and marketers for <strong>time-savings</strong>, <strong>scalability</strong>, and <strong>delivery expertise</strong>.</p><p>%open-track%</p>");
mail.addContent(content);
request.setBody(mail.build());
Response response = sg.api(request);
System.out.println(response.getStatusCode());
System.out.println(response.getBody());
System.out.println(response.getHeaders());
}
V3 版本的操作空间,比 V2 版本的要高很多,上述代码中,只有局部集体需要的代码,具体其余比方附件、抄送、批量发送等性能大家能够自行钻研下
至此,邮件下发这块应该是完结了,接下来咱们看看回调
回调
回调地址配置
咱们想要 SendGrid 回调咱们,那么咱们是不是须要提供一个口子供它回调 (回调在 SendGrid 官网叫做 Event Webhook)
咱们能够间接在后盾配置回调地址:https://app.sendgrid.com/sett…
配置的时候,有一个 Authorization Method,如果没有抉择 None 即可
同时能够抉择你须要订阅的事件类型,比方:关上、点击、拒收等
内容解析
回调的内容格局参考:https://docs.sendgrid.com/for…
我这边贴出一部分代码
@SneakyThrows
private void doCallBack(SendGridEmailNoticeMessage message) {switch (message.getEvent()) {
case "delivered":// 达到
doDelivered(message);
break;
case "bounce":// 拒收
doBounce(message);
break;
case "unsubscribe":// 退订
doUnsubscribe(message);
break;
default:
log.error("不反对的 SendGrid 事件类型:{}", JsonUtils.toString(message));
}
}
大家依据本人的需要,来解决本人的业务逻辑即可
另外:如果返回的内容中短少须要的数据,能够在下发的时候通过自定义的形式下发
还有其余想理解的或者问题,能够在下方留言
相干链接
留神须要梯子哦
官网:https://sendgrid.com/
登录:https://app.sendgrid.com/
回调事件报文:https://docs.sendgrid.com/for…
谬误排查:https://www.thinbug.com/q/422…
对接 api 入口:https://docs.sendgrid.com/for…
自定义参数:https://docs.sendgrid.com/for…
邮件发送文档:https://docs.sendgrid.com/api…
设置 appKey:https://app.sendgrid.com/sett…
发件人认证地址:https://app.sendgrid.com/sett…
配置回调地址:https://app.sendgrid.com/sett…