#microsoft-graph-api #microsoft-graph-mail
#microsoft-graph-api #microsoft-graph-mail
Вопрос:
По какой-то причине у меня не работает функция «Отправить от имени». Graph всегда возвращает ошибку Sendasdenied (когда значения полей 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), однако доставка электронной почты ВСЕГДА завершается сбоем.
Образец отправленного сообщения в формате 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
областями.
Комментарии:
1. удаление раздела «отправитель» ничего не меняет.