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版本
@SneakyThrowsprivate 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...
我这边贴出一部分代码
@SneakyThrowsprivate 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...