C# 在Exchange web服务器管理的API中访问电子邮件属性

C# 在Exchange web服务器管理的API中访问电子邮件属性,c#,exchangewebservices,C#,Exchangewebservices,我对EWS完全是个新手,但我正在尝试将一个功能良好的IMAP程序转换为EWS&在访问托管API中的简单字段时遇到问题,例如发件人、发件人、BodyType。谁能看出我做错了什么?非常感谢各位 ItemView view = new ItemView(99); SearchFilter.Exists filter = new SearchFilter.Exists(EmailMessageSchema.Id); FindItemsResults<

我对EWS完全是个新手,但我正在尝试将一个功能良好的IMAP程序转换为EWS&在访问托管API中的简单字段时遇到问题,例如发件人、发件人、BodyType。谁能看出我做错了什么?非常感谢各位

        ItemView view = new ItemView(99);
        SearchFilter.Exists filter = new SearchFilter.Exists(EmailMessageSchema.Id);
        FindItemsResults<Item> inboxMessageList = service.FindItems(WellKnownFolderName.Inbox, view);
        Console.WriteLine("Inbox message count: " + inboxMessageList.TotalCount);
        int messageCounter = 1;

        //message loop
        foreach (Item thisMessage in inboxMessageList)
        {
            //Collect info about current email message
            Item thisItem = Item.Bind(service, thisMessage.Id);
            Console.WriteLine("Current message ID: " + thisMessage.Id);

            string uniqueID = "EMAIL-" + DateTime.UtcNow.ToString("yyyyMMdd-HHmmss-fff");
            string messageTo = thisItem.DisplayTo;
            string messageCC = thisItem.DisplayCc;
            string messageFrom = //cant get this to work
            string messageSubject = thisItem.Subject;
            string messageDate = thisMessage.DateTimeReceived.ToString();
            int noOfAttachments = 0;
            Boolean messageHasAttachments = thisMessage.HasAttachments;
            if (messageHasAttachments) noOfAttachments = thisMessage.Attachments.Count();
            string isBodyHtml = //cant seem to implement this either
            Boolean domainblacklistResult = fn.CheckIfDomainBlacklisted(messageFrom);
            Boolean emailblacklistResult = fn.CheckIfEmailBlacklisted(messageFrom);
ItemView=newitemview(99);
SearchFilter.Exists filter=新的SearchFilter.Exists(EmailMessageSchema.Id);
FindItemsResults inboxMessageList=service.FindItems(WellKnownFolderName.Inbox,视图);
Console.WriteLine(“收件箱邮件计数:”+inboxMessageList.TotalCount);
int messageCounter=1;
//消息循环
foreach(inboxMessageList中的项目thisMessage)
{
//收集有关当前电子邮件的信息
Item thisItem=Item.Bind(服务,thisMessage.Id);
Console.WriteLine(“当前消息ID:+thisMessage.ID”);
字符串uniqueID=“EMAIL-”+DateTime.UtcNow.ToString(“yyyyMMdd HHmmss fff”);
字符串messageTo=thisItem.DisplayTo;
字符串messageCC=thisItem.DisplayCc;
字符串messageFrom=//无法使其工作
string messageSubject=thisItem.Subject;
字符串messageDate=thisMessage.DateTimeReceived.ToString();
int noOfAttachments=0;
布尔messagehasaAttachments=thisMessage.hasaAttachments;
if(messagehasaattachments)noOfAttachments=thisMessage.Attachments.Count();
string isBodyHtml=//似乎也无法实现此功能
Boolean domainblacklistResult=fn.CheckIfDomainBlackList(messageFrom);
布尔值emailblacklistResult=fn.CheckIfEmailBlacklisted(messageFrom);

要访问有关电子邮件的信息,您需要将其绑定为
电子邮件
,而不是
。示例:

EmailMessage message = EmailMessage.Bind(service, thisMessage.Id);

嗨,MadDev,我似乎无法让它工作:(尝试将view.PropertySet添加到foreach循环之外,但仍然无法访问属性。尝试扩展该项。绑定以包括第三个PropertySet重载,但也不起作用。请提供更多想法??谢谢!当您调用
Item.Bind
时,
此项
是否为空?我不确定您是否需要
Item.Bind
code。另外,请注意,并非所有项目都是电子邮件(可能会有会议请求等)。请参见Hi MadDev,再次感谢!答案是将其绑定为电子邮件,而不是项目。这就成功了:)谢谢!酷,没问题:)。我已更新了我的答案,以帮助将来可能遇到此问题的其他人。请随时将其标记为答案