乐趣区

关于java:SendGrid邮件渠道对接

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…

退出移动版