团队不显示通过 SendGrid 发送的电子邮件

时间:2021-03-11 13:25:13

标签: email microsoft-teams sendgrid

我正在尝试使用 SendGrid 通过电子邮件地址发布到 Teams 频道。但是,我通过 SendGrid 发送的电子邮件没有出现。我最终还添加了我的个人电子邮件地址,我确实收到了该地址,并在“收件人:”字段中看到了 Teams 电子邮件地址。我还可以在 SendGrid 仪表板中看到电子邮件被发送并传送到团队频道地址。我已经验证该地址是正确的,并且还通过我的非工作电子邮件地址发布到该频道,所以我知道这不是因为打字错误或外部电子邮件地址。我的猜测是电子邮件元数据中的某些内容使 Teams 拒绝了电子邮件?任何人都有想法 1) 为什么 Teams 不会发布来自 SendGrid 的电子邮件和 2) 我如何修改 SendGrid 中的请求以使其正常工作?此外,欢迎提供有关从 nodejs 发送电子邮件(免费)的替代建议。

这是我用来发送电子邮件以供参考的代码:

        var msg = {
            to: ['TEAMSCHANNELID@amer.teams.ms','mycompanyemail@company.com'], // ChatBot Support Team, General Channel
            from: 'noreply@chatbotapimonitor.com',
            subject: `Service Interruption Notice: API ${test} is down (via ${functionName})`,
            text: `API ${test} failed with error ${error}`,
            html: `API ${test} failed with error ${error}`
        };
        try {
            await sgMail.send(msg);
        } catch (err) {
            context.log(err);
        }

2 个答案:

答案 0 :(得分:0)

也许您的组织将发送能力限制在某些域?具有管理员权限的人可以在 Teams 设置 => 电子邮件集成

下进行检查

是的,这就是我的意思 - 制作您自己的连接器应用程序和侧载。如果你继续这样做,请告诉我 - 很想知道它是如何工作的

是的,完全可以制作自己的连接器。

答案 1 :(得分:0)

事实证明,如果发件人地址域与实际的“发件人”域不匹配,Teams 将不会接受传入的电子邮件。当电子邮件也发送给我时,我通过 Outlook 中看到的“通过 sendgrid.net 发送”消息认出了这一点。

我能够启用开箱即用的传入 Webhooks,并使用它代替 SendGrid 电子邮件解决了问题。我从 webhook 配置中获取了 URL,然后可以像这样调用它:

        var headers = { 'ContentType': 'application/json'}
        var body = {
            '@context': 'https://schema.org/extensions',
            '@type': 'MessageCard',
            'themeColor': 'FF0000',
            'title':`API ${test} is down: Service Interruption Notice`,
            'text': `API ${test} failed with error ${error}.\n\r\n\rReported by ${functionName} during test started on ${now.toString()}`
        };
        var res = await request({
            url: url,
            method: 'POST',
            headers: headers,
            json: body,
            rejectUnauthorized: false
        });

themeColor 并未出现在所有频道中,但我将其用作 Teams 桌面上的一个不错的红色/绿色指示器。