问题陈述
我正在寻找一种方法来计算发送到特定电子邮件的任何电子邮件,逻辑是它已发送,它将位于“已发送项目”中。
问题
我正在使用下面的代码,我认为它接近正确但不起作用,即我没有得到计数。可能我错过了一些东西。如果有人有解决方案,想听听如何最好地做到这一点。
早期的尝试
- Items.Find("[To] = 'search@gmail.com'")
- Items.Restrict("[To] = 'search@gmail.com'") 他们都没有给我结果。
如何
注意:虽然代码适用于基于 ADX 的插件,但我相信问题并非特定于它。[代码]
public int GetSentEmailExchangeCount(string SenderEmailId)
{
Outlook.MAPIFolder sentItems = (Outlook.MAPIFolder)this.OutlookApp.ActiveExplorer().Session.GetDefaultFolder((Outlook.OlDefaultFolders.olFolderSentMail));
Outlook.Items folderItems = (Outlook.Items)sentItems.Items;
string searchCriteria = "@SQL=\"urn:schemas:httpmail:displayto\" LIKE '%" + SenderEmailId + "%'";
StringBuilder strBuilder = null;
int counter = default(int);
Outlook._MailItem mail = null;
object resultItem = null;
try
{
strBuilder = new StringBuilder();
resultItem = folderItems.Restrict(searchCriteria);
while (resultItem != null)
{
if (resultItem is Outlook._MailItem)
{
counter++;
}
Marshal.ReleaseComObject(resultItem);
resultItem = folderItems.FindNext();
}
}
catch (Exception ex)
{
Debug.Print(ex.Message);
}
finally
{
if (folderItems != null) Marshal.ReleaseComObject(folderItems);
}
return counter;
}