Node.js 中的 Sendgrid API

Send Grid API in Node.js

我正在尝试获取联系人列表并检查电子邮件收件人是否打开了电子邮件。 我找到了这段代码并尝试但得到了 401。

import config from "@server/config"
sgClient.setApiKey(config.sendgridKey)
  const headers = {
    "on-behalf-of": "my account user name"  // I put my account user name here
  }

  const request = {
    url: `/v3/subusers`,
    method: "GET"
  } as any
  const list = await sgClient
    .request(request)
    .then()
    .catch((err) => {
      console.log("list", err.response.body)
    })

我需要为 header 'on-behalf-of' 添加什么?子用户的用户名是什么? 有什么例子可以得到 'email opened' 事件吗? 我正在使用 Node.js.

谢谢!

此处为 Twilio SendGrid 开发人员布道师。

您尝试使用的 API 是 subuser API,而不是联系人 API。子用户 API 用于管理子用户,您可以向这些帐户申请信用并从中发送电子邮件。子用户仅适用于 Pro 或 Premier 电子邮件帐户或 Advanced Marketing Campaign 帐户。

但是,即使您使用 Contacts API 获取联系人列表,也不是查看他们是否打开电子邮件的方法。

您应该注册 Event Webhook. With the Event Webhook, SendGrid will send you webhook requests about events that occur as SendGrid processes your emails. These events include "processed", "delivered", "opened", and "clicked" and there are more in the documentation

要处理事件 Webhook,您需要自己创建一个可以接收传入 HTTP 请求的端点。这是 an example from the documentation 使用 Express。

const express = require('express');
const app = express();
app.use(express.json());

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
});

app.post('/event', function (req, res) {
  const events = req.body;
  events.forEach(function (event) {
    // Here, you now have each event and can process them how you like
    processEvent(event);
  });
});

var server = app.listen(app.get('port'), function() {
  console.log('Listening on port %d', server.address().port);
});