В настоящее время используется Outlook 2.0, что для меня действительно ново, и я столкнулся с непредвиденной проблемой. В настоящее время у меня есть моя аутентификация и я могу создать свой внешний Outlook без проблем. Однако, после проведения тестового запуска на почтовый ящик, который в настоящее время есть 250 писем я вижу, что этот апи только извлекает 10. Глядя, чтобы увидеть, если кто-то столкнулся с этим вопросом при использовании Outlook, апи v 2.0Перспектива звонка только возвращает 10 пунктов за звонок
Код
private static async Task<OutlookServicesClient> CreateOutlookClientAsync(AuthenticationContext authenticationContext)
{
OutlookServicesClient outlookClient = null;
try
{
outlookClient = new OutlookServicesClient(
new Uri(CrmPrototype.Helpers.AuthHelper.OutlookAPIEndpoint),
async() =>
await GetTokenHelperAsync(authenticationContext, CrmPrototype.Helpers.AuthHelper.OutlookAuthenticationEndpoint)
);
return outlookClient;
}
catch (Exception ex)
{
// TODO Log
return outlookClient;
}
}
private static async Task<GraphServiceClient> CreateGraphClientAsync(AuthenticationContext authenticationContext)
{
GraphServiceClient graphClient = null;
try
{
graphClient = new GraphServiceClient(
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
string accessToken = await GetTokenHelperAsync(authenticationContext, CrmPrototype.Helpers.AuthHelper.OutlookAuthenticationEndpoint);
// Append the access token to the request.
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
}));
return graphClient;
}
catch (Exception ex)
{
// TODO Log
return graphClient;
}
}
private static async Task<string> GetTokenHelperAsync(AuthenticationContext context, string resourceId)
{
string accessToken = null;
try
{
X509Certificate2 certificate = new X509Certificate2(CrmPrototype.Helpers.AuthHelper.devCertPath, CrmPrototype.Helpers.AuthHelper.devCertKey, X509KeyStorageFlags.MachineKeySet);
ClientAssertionCertificate clientAssertionCert = new ClientAssertionCertificate(CrmPrototype.Helpers.AuthHelper.devClientId, certificate);
AuthenticationResult result = null;
result = await context.AcquireTokenAsync(resourceId, clientAssertionCert);
accessToken = result.AccessToken;
return accessToken;
}
catch (Exception ex)
{
// TODO Log
return accessToken;
}
}
public static async Task<IMessageCollection> GetEmails(string emailBox)
{
IMessageCollection emails = null;
AuthenticationContext authenticationContext = new AuthenticationContext(CrmPrototype.Helpers.AuthHelper.devTenant);
try
{
var outlookClient = await CreateOutlookClientAsync(authenticationContext);
var mail_Box = await outlookClient.Users[emailBox].MailFolders["Inbox"].Messages.OrderByDescending(m => m.ReceivedDateTime).ExecuteAsync();
var messages = mail_Box.CurrentPage; << only gets 10 emails at a time
foreach (var message in messages)
{
var stop = 0;
}
return emails;
}
catch (Exception ex)
{
// TODO Log
return emails;
}
}
часы Результаты
Благодарим вас за ответ Benoit. Я знаком с поисковым вызовом в JavaScript, который делается очень просто, потому что его лёгкие ограничения, но я могу обернуть свою голову вокруг, можете ли вы указать мне пример или статью? Еще раз, спасибо. – EasyE
Я не совсем понимаю, что вам нужно, но эта документация по параметрам ODATA Outlook REST API https://msdn.microsoft.com/en-us/office/office365/api/complex-types-for-mail-contacts-calendar #OdataQueryParams поможет вам. –