使用Microsoft Graph读取用户电子邮件的示例

时间:2018-10-05 22:43:08

标签: microsoft-graph

我正在创建一个C#.Net Core 2.0控制台应用程序以读取特定用户的电子邮件。我已成功使此sample console application工作。因此身份验证有效。我添加了阅读所有用户电子邮件的权限。我查看了API文档,但看不到阅读用户电子邮件的示例。大量发送示例。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

获取每个人的邮件。

var users = graphClient.Users.Request().GetAsync().Result;

要获取特定用户的邮件:

List<QueryOption> options = new List<QueryOption>
{
     new QueryOption("$filter", "startswith(displayName,'the specific user's mail')")
};
var users= await graphClient.Users.Request(options).GetAsync();
//Or
  var users = await graphClient.Users.Request().Filter("startswith(displayName,'help')").GetAsync();

获取邮件:

  foreach (var item in users)
    {
      string currentMail=item.Mail;
    }

更新2018-10-7 对于您更新的帖子:

您可以使用以下API来过滤邮件:

https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages?$filter=ReceivedDateTime ge 2018-10-04 and startswith(subject,'{subject}') 

答案 1 :(得分:0)

感谢您的发布。如果我将过滤器注释掉,我可以使用它:

            GraphServiceClient client = GetAuthenticatedClient();

            string subject = "RE: ACTION NEEDED:";
            string dt = "2018-10-5T00:00:00";
            IUserMessagesCollectionPage msgs = client.Users["UserName@CompanyName.com"].Messages.Request()
                //.Filter($"receivedDateTime ge '{dt}'")  // Invalid filter
                .Filter($"startswith(subject, '{subject}') and receivedDateTime gt {dt}")
                .Select(m => new { m.Subject, m.ReceivedDateTime, m.From, m.Body })
                .Top(100)
                .GetAsync().Result;
            int msgCnt = msgs.Count;

我发布了一些有关使过滤器正常工作的信息。 startswith可以使用,但是日期过滤器失败。