Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exchange Web服务更新电子邮件,因为读取无效C#_C#_Sql_Email_Exchange Server_Exchangewebservices - Fatal编程技术网

Exchange Web服务更新电子邮件,因为读取无效C#

Exchange Web服务更新电子邮件,因为读取无效C#,c#,sql,email,exchange-server,exchangewebservices,C#,Sql,Email,Exchange Server,Exchangewebservices,我正在使用Exchange Web服务从Exchange server读取电子邮件并进行更新。我有一个在收件箱中包含子文件夹的父电子邮件的帐户,我可以成功阅读我想要的电子邮件,但当我尝试将其标记为“已阅读”时,该电子邮件仍然未读 这是我的代码: static void Main(string[] args) { var exchange = new ExchangeService(ExchangeVersion.Exchange2013_SP1); e

我正在使用Exchange Web服务从Exchange server读取电子邮件并进行更新。我有一个在收件箱中包含子文件夹的父电子邮件的帐户,我可以成功阅读我想要的电子邮件,但当我尝试将其标记为“已阅读”时,该电子邮件仍然未读

这是我的代码:

  static void Main(string[] args)
    {
        var exchange = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
        exchange.Credentials = new WebCredentials("User", "Pass", "Domain");
        exchange.AutodiscoverUrl("Email", RedirectionCallback);
        FolderId folderToAccess = new FolderId(WellKnownFolderName.Inbox, "ParentEmail");
        FolderView view2 = new FolderView(100);
        view2.PropertySet = new PropertySet(BasePropertySet.IdOnly);
        view2.PropertySet.Add(FolderSchema.DisplayName);
        view2.Traversal = FolderTraversal.Deep;
        FindFoldersResults findFolderResults = exchange.FindFolders(folderToAccess, view2).Result;

        foreach (Folder f in findFolderResults)
        {
            if (f.DisplayName == "NameOfTheFolderUnderInbox")
            {
                var SearchFilter = new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false);
                ItemView view = new ItemView(100);
                FindItemsResults<Item> findResults = exchange.FindItems(f.Id, SearchFilter, view).Result;

                foreach (Item item in findResults)
                {
                    PropertySet props = new PropertySet(EmailMessageSchema.MimeContent, ItemSchema.Subject);
                    EmailMessage message = EmailMessage.Bind(exchange, item.Id, props).Result;
                    if (message.Subject.Contains("Text"))
                    {
                        string emlFileName = @"C:\export\email.eml";
                        using (FileStream fs = new FileStream(emlFileName, FileMode.Create, FileAccess.Write))
                        {
                            fs.Write(message.MimeContent.Content, 0, message.MimeContent.Content.Length);
                        }
                    }
                    message.IsRead = true;
                    message.Update(ConflictResolutionMode.AlwaysOverwrite, true);
                }
            }
        }
    }
    static bool RedirectionCallback(string url)
    {
        // Return true if the URL is an HTTPS URL.
        return url.ToLower().StartsWith("https://");
    }
static void Main(字符串[]args)
{
var exchange=新的ExchangeService(ExchangeVersion.Exchange2013\u SP1);
exchange.Credentials=新的WebCredentials(“用户”、“通行证”、“域”);
exchange.AutodiscoverUrl(“电子邮件”,重定向回调);
FolderId folderToAccess=新的FolderId(WellKnownFolderName.Inbox,“家长电子邮件”);
FolderView视图2=新FolderView(100);
view2.PropertySet=新的PropertySet(BasePropertySet.IdOnly);
view2.PropertySet.Add(FolderSchema.DisplayName);
view2.Traversal=FolderTraversal.Deep;
FindFoldersResults findFolderResults=exchange.FindFolders(folderToAccess,view2);
foreach(findFolderResults中的文件夹f)
{
如果(f.DisplayName==“文件夹名称”)
{
var SearchFilter=new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead,false);
ItemView视图=新的ItemView(100);
FindItemsResults findResults=exchange.FindItems(f.Id,SearchFilter,view).Result;
foreach(findResults中的项目)
{
PropertySet props=新的PropertySet(EmailMessageSchema.mimContent,ItemSchema.Subject);
EmailMessage=EmailMessage.Bind(exchange,item.Id,props).Result;
if(message.Subject.Contains(“文本”))
{
字符串emlFileName=@“C:\export\email.eml”;
使用(FileStream fs=newfilestream(emlFileName,FileMode.Create,FileAccess.Write))
{
写入(message.MimeContent.Content,0,message.MimeContent.Content.Length);
}
}
message.IsRead=true;
message.Update(ConflictResolutionMode.AlwaysOverwrite,true);
}
}
}
}
静态bool重定向回调(字符串url)
{
//如果URL是HTTPS URL,则返回true。
返回url.ToLower().StartsWith(“https://”);
}

好的,我解决了这个问题,可能对其他人有用

更新后,进行了一项新的研究,outlook上也阅读了这封电子邮件

FindItemsResults<Item> UpdateResults = exchange.FindItems(f.Id, SearchFilter, view).Result
FindItemsResults UpdateResults=exchange.FindItems(f.Id,SearchFilter,view).Result

此更新后使其工作

电子邮件未读
:您是如何检查的?您是否在运行此程序之前关闭Outlook,并在运行此程序之后重新打开它,而您没有纠正,Outlook喜欢以某种方式/在某个地方缓存此类信息…是的,我关闭了它,然后在程序前后再次启动它。如果我再次运行它,电子邮件仍然未读…我会为此疯狂。如果在更新后执行message.load(),IsRead的属性值是多少?IsRead=true,但在outlook上仍然未读。