我使用此代码在outlook 中查找电子邮件
Microsoft.Office.Interop.Outlook.Application outlook;
outlook = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook.Folder folder = outlook
.GetNamespace("MAPI")
.Folders
.OfType<Microsoft.Office.Interop.Outlook.Folder>()
.Skip(1)
.First()
.Folders
.OfType<Microsoft.Office.Interop.Outlook.Folder>()
.Skip(1)
.First()
.Folders
.OfType<Microsoft.Office.Interop.Outlook.Folder>()
.First();
string query = @"@SQL=""urn:schemas:httpmail:textdescription"" like '%3Z70699Y0404605413%'";
var table = folder.GetTable(query); // operation fails sometimes
它起作用,但随机地它不起作用。GetTable
有时会出现类似操作失败的错误(确切的措辞是"Operace se nezdařila"(。例外情况中没有进一步的细节。随着时间的推移,情况似乎会变得更糟,当有时逐渐变为总是时。我怀疑这可能与使用linq时泄露com对象有关。但老实说不知道。欢迎提出任何想法。
当涉及到Outlook对象模型时,这是一个看起来很奇怪的代码-永远不要硬编码文件夹索引,即使是名称也是一种糟糕的做法。订单永远不会得到保证,而且名称可以本地化。
你确定你最终得到了正确的文件夹吗?做文件夹。名称是否返回预期值?