Невозможно отправить сообщение электронной почты от имени другой учетной записи O365. - PullRequest
0 голосов
/ 04 марта 2019

По какой-то причине у меня не работает функция «Отправить от имени».Graph всегда возвращает ErrorSendAsDenied (когда значения полей From и Sender различны).

Подтверждено, что учетные записи имеют правильную конфигурацию для отправки от имени друг друга.Я не мог заставить его работать, потратив на это более трех дней.

При аутентификации запрашиваются следующие разрешения:

  • 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"
            }
         }
      ]
   }
}

Если Sender и From установлены на одно и то же значение, оно работает нормально.Почтовый ящик Sender настроен на отправку сообщений от имени других пользователей.

enter image description here

Есть идеи?

1 Ответ

0 голосов
/ 04 марта 2019

Вам не нужно устанавливать свойство 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.

...