在GET/messages/{msg_ID}中找不到SendGrid消息ID



我目前正在尝试在我的应用程序中实现SendGrid电子邮件活动。每当事件启动时,我都可以访问我需要的信息。当试图查看与message_id对应的消息时,我收到错误:NOT FOUND。

我想知道是否有解决方案,或者尚未在SendGrid上创建该解决方案,以及如何根据参与或交付事件访问消息信息?

感谢


const env = require('dotenv').config();
const client = require('@sendgrid/client');
client.setApiKey(process.env.SENDGRID_API_KEY);
const eventStatus = info.event;
const customerAccountNumber = info.customerAccountNumber;
const recipient = info.email;
const messageId = info.sg_message_id;
console.log("message ID:", messageId);
try {
const request = {};
request.method = 'GET';
request.url = '/v3/messages/' + messageId;
client.request(request)
.then(([response, body]) => {
console.log(response.statusCode);
if(response.statusCode == 200) {
const messageInfo = response.body;
const sender = messageInfo.from_email;
const subject = messageInfo.subject;

console.log(eventStatus, customerAccountNumber, sender, recipient, messageId, subject);
}
else {
console.dir("Here");
}
});
}
catch(e){
console.log(e);
}
return("Test");

我相信您得到的是HTTP 404,因为您组合的URL是错误的。给定messageId = 'foobar123',以下代码

request.url = '/v3/messages/' + messageId;

将产生请求URL"/v3/messages/foobar123"

快速浏览一下文档,URL应该更像"/v3/messages?limit=10&query={your_query}",这里描述了{your_query}的选项。

我假设您正在尝试进行msg_id="filter0307p1las1-16816-5A023E36-1.0"之类的查询。您需要将其作为URL参数query传递。您还需要对其进行URL编码,因为它包含="字符。把所有这些放在一起,我会尝试这样的东西:

const query = `msg_id="${messageId}"`;
const request = {};
request.method = 'GET';
request.url = `/v3/messages?query=${encodeURIComponent(query)}`;
client.request(request).then(...)

最新更新