Azure Functions 및 Event Webhook에서 SendGrid의 메일 배달 상태 확인
하지만 배달 요청이 제대로 전송되었다고 하더라도 나중에 어떻게 될지 걱정해야 합니다. 예를 들어,
등과 같은 것을 신경 쓰지 않으면 안됩니다. SendGrid는 그것을 확인하기 위해 활동 기능을 제공합니다.
이것은 매우 편리하지만 화면 응답이 느리고 여러 사람이이 화면을 보면 오류가 발생합니다.
Event Webhook
“이 정보를 자신의 시스템에 가지고 싶다!”라고 생각하는 사람을 위해서, SendGrid는 Event Webhook 를 제공하고 있습니다. 이것은 각 메일의 배송 상태를 지정한 Webhook의 엔드 포인트에 정보를 보내주는 기능입니다.
Event Webhook
이메일 배달 요청을 수락한 후 각 상태에 대해 고유한 정보를 JSON으로 등록한 Webhook의 끝점으로 보냅니다.
Azure Functions로 Webhook 엔드포인트 구현
Webhook은 Azure Functions의 Http 트리거의 차례입니다! 그렇다고 해서, 시험에 만들어 보았습니다.
이 샘플은 메일이 예상대로 도착하지 않은 경우 HipChat에서 지정한 방에 알림을 제공하는 Function입니다.
SendGridWebhook/index.jsvar Hipchatter = require('hipchatter');
var hipchatter = new Hipchatter(process.env.HIPCHAT_ROOM_TOKEN)
function notifyToRoom(event, context)
{
event.timestamp = new Date(event.timestamp * 1000);
var options = {
message: `/code ${JSON.stringify(event, null, ' ')}`,
message_format: 'text'
};
switch (event.event) {
case 'bounce':
case 'deferred':
case 'dropped':
case 'spamreport':
case 'unsubscribe':
options.color = 'red';
options.notify = true;
break;
case 'delivered':
case 'open':
case 'click':
options.color = 'green';
break;
default:
options.color = 'gray';
break;
}
hipchatter.notify(process.env.HIPCHAT_ROOM_ID, options,
function (err) {
if (err)
context.log.error(err);
}
);
}
module.exports = function (context, req) {
var events = req.body;
if (!events) {
context.log.error(`unexpected body: ${req.body}`);
return;
}
events.forEach(function(event) {
notifyToRoom(event, context);
context.log(event);
}, this);
context.res = { status: 200, body: '' }
context.done();
};
실제 알림은 이런 느낌입니다. 제대로 배송되었을 경우는 녹색으로, 뭔가 문제가 있었을 경우는 붉게 통지가 도착하게 되어 있습니다.
이번은 배송 상황을 알고 싶었기 때문에 통지했습니다. 그 밖에도 응용으로서,
Webhook은 Azure Functions의 Http 트리거의 차례입니다! 그렇다고 해서, 시험에 만들어 보았습니다.
이 샘플은 메일이 예상대로 도착하지 않은 경우 HipChat에서 지정한 방에 알림을 제공하는 Function입니다.
SendGridWebhook/index.js
var Hipchatter = require('hipchatter');
var hipchatter = new Hipchatter(process.env.HIPCHAT_ROOM_TOKEN)
function notifyToRoom(event, context)
{
event.timestamp = new Date(event.timestamp * 1000);
var options = {
message: `/code ${JSON.stringify(event, null, ' ')}`,
message_format: 'text'
};
switch (event.event) {
case 'bounce':
case 'deferred':
case 'dropped':
case 'spamreport':
case 'unsubscribe':
options.color = 'red';
options.notify = true;
break;
case 'delivered':
case 'open':
case 'click':
options.color = 'green';
break;
default:
options.color = 'gray';
break;
}
hipchatter.notify(process.env.HIPCHAT_ROOM_ID, options,
function (err) {
if (err)
context.log.error(err);
}
);
}
module.exports = function (context, req) {
var events = req.body;
if (!events) {
context.log.error(`unexpected body: ${req.body}`);
return;
}
events.forEach(function(event) {
notifyToRoom(event, context);
context.log(event);
}, this);
context.res = { status: 200, body: '' }
context.done();
};
실제 알림은 이런 느낌입니다. 제대로 배송되었을 경우는 녹색으로, 뭔가 문제가 있었을 경우는 붉게 통지가 도착하게 되어 있습니다.
이번은 배송 상황을 알고 싶었기 때문에 통지했습니다. 그 밖에도 응용으로서,
라고 하는 것도 할 수 있을 것 같습니다.
그럼 즐거운 메일 라이프를 < ⚡ >
참고
Reference
이 문제에 관하여(Azure Functions 및 Event Webhook에서 SendGrid의 메일 배달 상태 확인), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sato_ryu/items/0a14b1c1afedb2d2d999텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)