无法代表另一个O365 Outlook帐户发送电子邮件

时间:2019-03-04 11:16:56

标签: microsoft-graph microsoft-graph-mail

由于某种原因,“代表发送”功能对我来说失败了。图始终返回 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邮箱被配置为允许代表其他用户发送邮件。

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您不需要设置Sender属性,Graph将自动为您处理。来自documentation

  

要从其他用户发送邮件,请在发送到该用户的电子邮件地址的邮件上设置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"
         }
      },
   }
}

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