using Microsoft.Exchange.WebServices.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ExchangeTest
{
class Program
{
static ExchangeService service;
static string userEmail = "xxxxx@abcd.onmicrosoft.com";
static string userPassword = "xxxxx";
static void Main(string[] args)
{
Console.WriteLine("Connecting to Exchange Online, please wait...");
service = new ExchangeService(ExchangeVersion.Exchange2013);
service.Credentials = new WebCredentials(userEmail, userPassword);
service.AutodiscoverUrl(userEmail, RedirectionUrlValidationCallback);
//获取未读邮件数
int unRead = Folder.Bind(service, WellKnownFolderName.Inbox).UnreadCount;
GetUnreadEmails();
}
/// <summary>
/// 获取邮件
/// </summary>
private static void GetUnreadEmails()
{
ItemView view = new ItemView(int.MaxValue);
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, SetFilter(), view);
List<string> list = new List<string>();
foreach (Item item in findResults.Items)
{
if (item.Subject != null)
{
list.Add(item.Subject.ToString());
}
else
{
list.Add("无标题");
}
//list.Add(item.DateTimeSent.ToString());
}
}
/// <summary>
/// 设置获取什么类型的邮件
/// </summary>
private static SearchFilter SetFilter()
{
List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
searchFilterCollection.Add(new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
SearchFilter s = new SearchFilter.SearchFilterCollection(LogicalOperator.And, searchFilterCollection.ToArray());
//如果要获取所有邮件的话代码改成这样:
//List<SearchFilter> searchFilterCollection = new List<SearchFilter>();
//searchFilterCollection.Add(new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
//searchFilterCollection.Add(new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, true));
//SearchFilter s = new SearchFilter.SearchFilterCollection(LogicalOperator.Or, searchFilterCollection.ToArray());
return s;
}
/// <summary>
/// 重定向URL验证回调
/// </summary>
static bool RedirectionUrlValidationCallback(String redirectionUrl)
{
bool redirectionValidated = false;
if (redirectionUrl.Equals("https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml"))
redirectionValidated = true;
return redirectionValidated;
}
}
}