【问题标题】:Teams not displaying email sent via SendGrid团队不显示通过 SendGrid 发送的电子邮件
【发布时间】:2021-03-11 13:25:13
【问题描述】:

我正在尝试使用 SendGrid 通过电子邮件地址发布到团队频道。但是,我通过 SendGrid 发送的电子邮件没有出现。我最终也添加了我的个人电子邮件地址,并且我确实收到了该地址,并且在“收件人:”字段中看到了 Teams 电子邮件地址。我还可以在 SendGrid 仪表板中看到电子邮件已发送并传递到 Teams 频道地址。我已经确认这个地址是正确的,并且还通过我的非工作电子邮件地址发布到该频道,所以我知道这不是因为拼写错误或外部电子邮件地址。我的猜测是电子邮件元数据中的某些内容使 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);
        }

【问题讨论】:

  • 为什么不直接使用 Incoming Webhooks?
  • 没有为我们的租户启用 :(
  • 也许您的组织将发送能力限制在某些域?具有管理员权限的人可以在Teams settings => 电子邮件集成下查看它
  • 听到这个消息很难过。连接器呢?
  • @RobertDyjas 实际上似乎问题可能是发件人和“实际”发件人不一样(在 Outlook 中,我可以在发件人地址之后看到通过 sendgrid.net 发送)。我猜如果地址不匹配,Teams 不允许发布消息。我猜在 SendGrid 中启用域身份验证可能会解决问题,但不幸的是我不太可能获得批准......

标签: email microsoft-teams sendgrid


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    我能够启用开箱即用的传入 Webhook,并且使用它而不是 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 桌面上作为一个漂亮的红色/绿色指示器工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多