问题描述
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
有时会给出类似 operation Failed 的错误(确切的措辞是“Operace se nezdařila”)。异常中没有进一步的细节。随着时间的推移,情况似乎变得更糟,有时逐渐变成总是。我怀疑这可能与使用 linq 时泄漏 com 对象有关。但老实说不知道。欢迎提出任何想法。
解决方法
当涉及到 Outlook 对象模型时,这是一个非常奇怪的代码 - 永远不要硬编码文件夹索引,即使名称也是一种不好的做法。顺序无法保证,名称可以本地化。
你确定你最终得到了正确的文件夹吗? folder.Name 是否返回预期值?