c#搜索所有Outlook文件夹的邮件项目的主题
本文关键字:项目 文件夹 搜索 Outlook | 更新日期: 2023-09-27 18:18:57
我正在尝试使用c#搜索我的Outlook收件箱(和所有子文件夹)的MailItem的主题匹配我的Regex。
目前我有这个:
//InboxItems property
public IEnumerable<MailItem> InboxItems
{
get
{
Microsoft.Office.Interop.Outlook.MAPIFolder folder =
outlook.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderInbox);
return folder.Items.OfType<MailItem>();
}
}
//inside method:
string ticketid = "6543165";
Regex rgx = new Regex(@"^((FWD|RE): ?)*Ticket Diary ?[:-] ([0-9]+ )*'b" + ticketid,
RegexOptions.IgnoreCase | RegexOptions.Compiled);
var email = InboxItems.OrderBy(m => m.CreationTime)
.FirstOrDefault(m => m.CreationTime >= createdAfter && rgx.IsMatch(m.Subject));
只有当电子邮件在我的收件箱文件夹中时,这才有效。但是,我想模仿Outlook的当前邮箱搜索功能,而不是当前文件夹。
我已经尝试创建我所有子文件夹的邮件的List<MailItem>
,但这需要太长时间来执行。
是否有一种有效的方法来查询收件箱&子文件夹吗?
不要遍历文件夹中的所有项目,也不要在Outlook中使用LINQ——这是非常低效的。
MAPIFolder.Items使用。查找/FindNext
/Restrict
如果您想搜索多个文件夹,使用Application.AdvancedSearch
- https://msdn.microsoft.com/en-us/library/office/ff866933.aspx