【发布时间】:2021-07-16 11:20:39
【问题描述】:
我正在尝试使用 C# 在我的 Outlook 收件箱(和所有子文件夹)中搜索主题与我的正则表达式匹配的 MailItem。
目前我有这个:
//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 的 当前邮箱 搜索功能,而不是 当前文件夹。
我已尝试为我的所有子文件夹的 MailItems 创建一个 List<MailItem>,但这需要很长时间才能执行。
有查询收件箱和子文件夹的有效方法吗?
【问题讨论】: