首页 > 解决方案 > SendGrid 不发送邮件,但不抛出任何错误

问题描述

这是我的代码:

userDetails = [{email:'email',id:'id'}]
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey('key');
for (const i in usersDetails) {
    const user = usersDetails[i];
    const msg = {
        from: `ZdajTo<noreply@zdajto.com>`,
        to: user.email,
        subject: `Dostepne sa nowe zadania z kategorii ${work.category}!`,
        html: `<p>Hej! Sprawdz aplikacje ZdajTo! Dostepne sa nowe zadania z kategorii ${work.category}! Aby zrezygnowac z otrzymywania emaili kliknij w <a href="https://Link/${user.id}" target="_blank">ten link</a></p>`,
    };
    calls.push(sgMail.send(msg).then(() => console.log(`Email sent to ${msg.to}`)).catch(e => console.log(e)));
}
return Promise.all(calls).then(() => console.log('Emails sent')).catch(err => console.log(8, err));

userDetails 是一组带有 id 的电子邮件。

II 之前在 nodemailer 中使用了几乎相同的代码,并且运行良好。这是 nodemailer 版本:

for (const i in usersDetails) {
    const user = usersDetails[i];
    calls.push(mailTransport.sendMail({
        from: `ZdajTo <noreply@zdajto.com>`,
        to: user.email,
        subject: `Dostepne sa nowe zadania z kategorii ${work.category}!`,
        html: `<p>Hej! Sprawdz aplikacje ZdajTo! Dostepne sa nowe zadania z kategorii ${work.category}! Aby zrezygnowac z otrzymywania emaili kliknij w <a href="https://Link/${user.id}" target="_blank">ten link</a></p>`,
    }).catch(err => console.log(7, err, user.email)));
}

奇怪的是,它Emails sent每次Email sent to...都这么说。没有抛出错误,但同时 SendGrid 说没有请求。知道我错过了什么吗?

标签: javascriptnode.jstypescriptgoogle-cloud-functionssendgrid

解决方案


我的假设是您收到了触发“已发送消息”部分的已接受响应 (202)。但是,它不能保证您的消息将被发送,我只是将其排队处理。在这种情况下,我会联系 Sendgrid 支持:Sendgrid 返回 202 但不发送电子邮件


推荐阅读