团队不显示通过 SendGrid 发送的电子邮件
Teams not displaying email sent via SendGrid
我正在尝试使用 SendGrid 通过电子邮件地址 post 到 Teams 频道。但是,我通过 SendGrid 发送的电子邮件没有出现。我最后也添加了我的个人电子邮件地址,我确实收到了那个地址,并且在“收件人:”字段中看到了 Teams 电子邮件地址。我还可以在 SendGrid 仪表板中看到电子邮件已发送 并已交付 到团队频道地址。我已验证该地址是正确的,并且还通过我的非工作电子邮件地址 post 编辑到该频道,所以我知道这不是因为拼写错误或外部电子邮件地址。我的猜测是电子邮件元数据中有什么东西让 Teams 拒绝了电子邮件?任何人都有想法 1) 为什么 Teams 不会 post 来自 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);
}
也许您的组织将发送能力限制为仅某些域?具有管理员权限的人可以在 Teams 设置下查看它 => 电子邮件集成
是的,这就是我的意思 - 制作您自己的连接器应用程序和旁加载。如果您继续进行,请告诉我 - 很想知道结果如何
是的,完全可以制作您自己的连接器。
事实证明,如果发件人地址域与实际的“发件人”域不匹配,Teams 将不会接受传入的电子邮件。当电子邮件也发送给我时,我在 Outlook 中看到的“通过 sendgrid.net 发送”消息识别出了这一点。
我能够开箱即用地启用 Incoming 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 桌面上的一个很好的 red/green 指示器。
我正在尝试使用 SendGrid 通过电子邮件地址 post 到 Teams 频道。但是,我通过 SendGrid 发送的电子邮件没有出现。我最后也添加了我的个人电子邮件地址,我确实收到了那个地址,并且在“收件人:”字段中看到了 Teams 电子邮件地址。我还可以在 SendGrid 仪表板中看到电子邮件已发送 并已交付 到团队频道地址。我已验证该地址是正确的,并且还通过我的非工作电子邮件地址 post 编辑到该频道,所以我知道这不是因为拼写错误或外部电子邮件地址。我的猜测是电子邮件元数据中有什么东西让 Teams 拒绝了电子邮件?任何人都有想法 1) 为什么 Teams 不会 post 来自 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);
}
也许您的组织将发送能力限制为仅某些域?具有管理员权限的人可以在 Teams 设置下查看它 => 电子邮件集成
是的,这就是我的意思 - 制作您自己的连接器应用程序和旁加载。如果您继续进行,请告诉我 - 很想知道结果如何
是的,完全可以制作您自己的连接器。
事实证明,如果发件人地址域与实际的“发件人”域不匹配,Teams 将不会接受传入的电子邮件。当电子邮件也发送给我时,我在 Outlook 中看到的“通过 sendgrid.net 发送”消息识别出了这一点。
我能够开箱即用地启用 Incoming 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 桌面上的一个很好的 red/green 指示器。