【发布时间】:2022-07-27 05:25:13
【问题描述】:
尝试使用客户端凭据工作流和应用程序权限通过 MS Graph API 从函数应用发送电子邮件。
基本上,该应用检测到存储帐户中的文件登陆,触发该应用并触发电子邮件。
按预期在我的 VS Code 桌面上工作。我在代理后面的公司网络上。
但是,在 Azure 的 FA 中进行测试时,虽然我们成功调用,但没有发送电子邮件 - 我们的 EO 邮箱日志显示没有收到任何邮件。
这是来自 FA Monitor 的日志。
2022-06-09T02:40:44.016 [Information] Executing 'Functions.email-via-graph-api' (Reason='New blob detected: failed/2022-05-18_15h41m00s_0266201111_0266207713_2.pdf', Id=c11e670f-423a-4427-af8d-b11d61192bce)
2022-06-09T02:40:44.016 [Information] Trigger Details: MessageId: 235a0fba-0210-46b9-a82b-50a4a858a490, DequeueCount: 1, InsertionTime: 2022-06-09T02:40:43.000+00:00, BlobCreated: 2022-06-07T03:15:04.000+00:00, BlobLastModified: 2022-06-09T02:40:35.000+00:00
2022-06-09T02:40:44.046 [Information] BEGIN: Sending email for failed referral via Graph API.
2022-06-09T02:40:44.046 [Information] Blob Name: 2022-05-18_15h41m00s_0266201111_0266207713_2.pdf
2022-06-09T02:40:44.046 [Information] Blob URI: https://STORAGEACCOUNTNAME.blob.core.windows.net/failed/2022-05-18_15h41m00s_0266201111_0266207713_2.pdf
2022-06-09T02:40:44.047 [Information] Executed 'Functions.email-via-graph-api' (Succeeded, Id=c11e670f-423a-4427-af8d-b11d61192bce, Duration=44ms)
如果我查看 Application Insights,我可以看到令牌调用和图形调用。
设置如下:
- 我们拥有针对 AD 应用的 mail.send 的申请权限。
- 我们有 2 封电子邮件(一个服务/自动化帐户和 Exchange Online 通用帐户)在允许访问 AD App->Graph 的邮件组中 API FA
- 我们的 FA 已连接到 VNET,route-all 设置为 true
- 内部所有以内部为目标的流量路由(这些都是内部警报电子邮件)
- 我们的公共/出站流量经过 VNET NAT 转换为 /30 公共前缀。
- 我们的 NSG 和代理允许端口 25 和 587 上的 SMTP(任意到任意)以及来自项目 56 here 的 IPV4 子网
通过 axios 的调用如下。再次,在桌面上工作
try {
console.log(JSON.stringify(email, null, 2));
const response = await axios({
url: `${GRAPH_ENDPOINT}/v1.0/users/${FROM_ADDRESS}/sendMail`,
method: "POST",
headers: {
"Authorization": `Bearer ${access_token}`,
"Content-Type": "application/json",
},
data: JSON.stringify(email),
});
非常感谢您提供任何见解!
【问题讨论】:
标签: azure-functions microsoft-graph-api