1

出于某种原因,“代表发送”功能对我来说失败了。Graph 始终返回ErrorSendAsDenied(当FromSender字段值不同时)。

帐户被验证具有代表彼此发送的正确配置。在花了三天多的时间后,我无法让它工作。

在身份验证期间请求以下权限:

  • openid
  • email
  • profile
  • offline_access
  • User.Read
  • Mail.Read
  • Mail.ReadWrite
  • Mail.Read.Shared
  • Mail.ReadWrite.Shared
  • Mail.Send
  • Mail.Send.Shared

对于下面的示例,用户 Gregory Test 希望代表 Sem Test 发送消息。有效的授权访问令牌(由 Gregory Test 验证)用于发送电子邮件,但电子邮件传递总是失败。

提交的 JSON 消息示例为:

{
   "Message":{
      "Subject":"Trying to send message on behalf",
      "Body":{
         "ContentType":"html",
         "Content":" email html content "
      },
      "From":{
         "EmailAddress":{
            "Address":"sem.test@contoso.com",
            "Name":"Sem Test"
         }
      },
      "Sender":{
         "EmailAddress":{
            "Address":"gregory.test@contoso.com",
            "Name":"Gregory Test"
         }
      },
      "ToRecipients":[
         {
            "EmailAddress":{
               "Address":"semtestestestes@gmail.com",
               "Name":"Sem Shehovtsov"
            }
         }
      ]
   }
}

如果SenderFrom设置为相同的值,则工作正常。Sender邮箱配置为允许代表其他用户发送邮件。

在此处输入图像描述

有任何想法吗?

4

1 回答 1

0

您无需设置Sender属性,Graph 会自动为您处理。从文档中:

为了从另一个用户发送,请设置from发送到用户电子邮件地址的消息的属性以发送。您无需设置该sender属性 - Microsoft Graph 将根据授予已登录用户的邮箱权限适当地设置它。

试试这个有效载荷:

{
   "message":{
      "subject": "Trying to send message on behalf",
      "body":{
         "contentType":"html",
         "content":" email html content "
      },
      "toRecipients":[
         {
            "emailAddress":{
               "address":"semtestestestes@gmail.com",
               "name":"Sem Shehovtsov"
            }
         }
      ],
      "from":{
         "emailAddress":{
            "address":"sem.test@contoso.com",
            "name":"Sem Test"
         }
      },
   }
}

此外,您不需要同时请求 Read范围ReadWrite。范围与ReadWrite范围重叠Read

于 2019-03-04T18:58:24.403 回答