Кто-нибудь знает, как запросить разрешение на отправку электронных писем с помощью Graph API приложением, которое работает без зарегистрированного пользователя?
У меня есть веб-приложение Azure с разрешением отправлять электронную почту с помощью Microsoft Graph.
На портале Azure (Azure Active Directory -> Регистрация приложений -> MyApp - разрешения API) мое приложение предоставило разрешение для Mail.Send
(Тип: Приложение: Описание: Отправка почты от имени любого пользователя).
На следующем шаге я приглашаю пользователя из моей организации. В Azure Ad тип пользователя - Гость. Я получил письмо на этот счет, чтобы принять приглашение.
Я могу войти с этой учетной записью через страницу входа Microsoft, но учетная запись управляется моей организацией - это не учетная запись, созданная мной.
Используя эту учетную запись с MS Graph Explorer, я могу отправить электронное письмо, но я хочу сделать то же самое из своего приложения без входа в систему. Цель состоит в том, чтобы использовать эту учетную запись только для отправки электронных писем.
Мне удалось получить токен доступа, использовать API и получить основную информацию о пользователе, но я получаю исключение при попытке отправить электронное письмо:
Код: ResourceNotFound
Сообщение: ресурс не может быть обнаружен.
// get token
var authContext =
new AuthenticationContext("https://login.microsoftonline.com/" + tenantID);
var result = await authContext
.AcquireTokenAsync("https://graph.microsoft.com", new ClientCredential(clientId, secret));
// create graph service
GraphServiceClient graphServiceClientApp =
new GraphServiceClient("https://graph.microsoft.com/v1.0",
new DelegateAuthenticationProvider(
async(requestMessage) =>
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("bearer", result.AccessToken);
}));
// create message obj
//.....
// send email
await graphServiceClientApp.Users["f5521fbc-481e-4e90-9166-33a64eb8f7e9"]
.SendMail(message, false)
.Request()
.PostAsync();
Идентификатор пользователя, такой как f5521fbc-481e-4e90-9166-33a64eb8f7e9
, взят из портала Azure, в пользовательских данных есть поле Идентификатор объекта