我正在根据Google(https://developers.google.com/gmail/api/guides/push)提供的指南为Gmail设置推送通知。我想让我的节点应用程序向.watch()注册一个客户端,然后按照文档中的描述在指定的端点接收电子邮件。
我创建了pub / sub主题,将gmail添加为发布者,添加了订阅者,并在我的节点应用程序中调用watch()。 watch()返回相应的{historyId:xxxx,expiration:yyyy}对象,根据Google的文档,它表示调用已成功。
用于在后端接收电子邮件通知的处理程序:
export const receiveGmailEmail: RequestHandler = async (req, res) => {
log('Received update from google!');
log(JSON.stringify(req.body, null, 2));
return res.status(200);
}
注册:
const watchRes = await gmailClient.watch();
log('====> Watch Response <=====');
log(JSON.stringify(watchRes, null, 2));
显示正确注册的服务器日志: ====>观看响应<===== { “ historyId”:“ 6560”, “到期”:“ 1562025255689” }
我从未在节点应用程序的接收端点接收消息。根据服务器日志,发布消息时,我从未真正收到任何请求。问题似乎是我的邮件未送达。我已通过Stackdriver监视器确认当我向电子邮件地址发送电子邮件时pub / sub主题正在发布消息,但是如果我在Stackdriver中查看订阅的详细信息,则表明未发送消息的数量不断增加。
是否有任何关于为什么订阅中的邮件未送达的消息?
答案 0 :(得分:0)
事实证明,这不是Google发布/订阅问题。 Amazon Cloudfront默认情况下会阻止POST请求,因此我必须编辑缓存行为以启用POST请求。 https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesAllowedHTTPMethods