Невозможно отправить сообщение электронной почты от имени другой учетной записи O365.
По какой-то причине у меня не работает функция "Отправить от имени". 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
почтовый ящик настроен на отправку сообщений от имени других пользователей.
Есть идеи?
1 ответ
Вам не нужно устанавливать 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
прицелы.