Я пытаюсь прочитать вложение электронной почты с помощью API Microsoft Graph (v2), но получаю сообщение об ошибке «Ссылка на объект не указывает на экземпляр»
Я проверил разрешения приложения в Azure Active Directory и получил все разрешения, указанные в документации Microsoft.
Mail.Read Group.Read.All (добавлено дополнительное разрешение для попытки) Я могу правильно прочитать сообщение и его содержимое, и даже свойство сообщения «HasAttachments» истинно, но когда я снова вызываю API для извлечения вложений, это дает ошибку.
Также попытался создать новый токен для извлечения вложений, учитывая тот факт, что срок действия существующего истек, но безуспешно.
OutlookServicesClient client = new OutlookServicesClient(new Uri(OutlookAPI), GetAccessToken);
client.Context.SendingRequest2 +=
new EventHandler<Microsoft.OData.Client.SendingRequest2EventArgs>((sender, e) => InsertXAnchorMailboxHeader(sender, e, userEmail));
var attachments = await client.Me.MailFolders.GetById(constInbox).Messages.GetById(strMessageID).Attachments.ExecuteAsync();
public async Task<string> GetAccessToken()
{
string accessToken = null;
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(TokenUri);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
var requestContent = string.Format("grant_type=password" + "&client_id=" + appId +
"&client_secret=" + appPassword +
"&resource=" + Resource +
"&username=" + userEmail +
"&password=" + passwd);
var content = new StringContent(requestContent, Encoding.UTF8, "application/x-www-form-urlencoded");
var response = client.PostAsync(client.BaseAddress, content).Result;
var result = response.Content.ReadAsStringAsync().Result;
var jobject = JsonConvert.DeserializeObject<JObject>(result);
accessToken = jobject.GetValue("access_token").ToString();
}
return accessToken;
}
Прикрепление Quickwatch для клиента. Пожалуйста, проверьте
client1
? Пожалуйста, покажите немного больше вашего кода. - person LocEngineer   schedule 09.09.2019client
после вызоваawait client.
‹= Вот загвоздка! Перенесите первую строку на третью. - person LocEngineer   schedule 10.09.2019.Attachments.ExecuteAsync()
должен быть скорее.Attachments.Request().GetAsync();
. docs.microsoft.com /en-us/graph/api/ - person LocEngineer   schedule 10.09.2019GraphServiceClient
. Мне нужно было выполнить еще один запрос, чтобы получить вложения после первого запроса, получившего сообщения. Этот вопрос В частности, ответ Томаша Пола помог мне и может быть тем, что вам нужно дляOutlookServicesClient
- person Brandon McClure   schedule 03.04.2020