【问题标题】:MSFT Azure Function App not sending emails via Graph API (works on desktop)MSFT Azure Function App 不通过 Graph API 发送电子邮件(适用于桌面)
【发布时间】: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


    【解决方案1】:

    这正在工作。但是,我没有解释为什么会这样。代码部署与实际成为 FA 使用的代码库之间似乎存在某种延迟。

    我实际上可以在代码中的其他调用中复制它(例如到 API)。当我在 VS Code 中运行代码时,当我向组织外部进行 API 调用时,我需要使用代理,显然,如果我将该代码与代理一起部署到 FA,FA 将无法工作(因为它不会使用代理)。如果我删除代理并重新部署,该更改需要大约 5 分钟才能生效。

    不过,非常令人费解的是,为什么 Graph API 调用一天左右都没有工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2017-01-29
      • 2019-04-01
      相关资源
      最近更新 更多