我正在尝试使用 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);
}
答案 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 桌面上的一个不错的红色/绿色指示器。