Exchange Web服务更新电子邮件,因为读取无效C#
我正在使用Exchange Web服务从Exchange server读取电子邮件并进行更新。我有一个在收件箱中包含子文件夹的父电子邮件的帐户,我可以成功阅读我想要的电子邮件,但当我尝试将其标记为“已阅读”时,该电子邮件仍然未读 这是我的代码: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
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上仍然未读。