Basit bir gereksinim -> Son yedi günde alınan e-posta sayısını say. Kod yeterince basit görünüyor: Hiçbir zaman işi harcanmaktadır olarak postadaSon e-postaların Outlook Analytics sayısı
void CountEmail()
{
Outlook.Explorer currExplorer = null;
Outlook.Folder folder = null;
Outlook.Items items = null;
Outlook.ContactItem contact = null;
string contactList = string.Empty;
try
{
currExplorer = Application.ActiveExplorer();
folder = (Outlook.Folder)currExplorer.CurrentFolder;
items = folder.Items;
int count = items.Count; // 10082 count
IEnumerable<Outlook.MailItem> mail = folder.Items.OfType<Outlook.MailItem>().Where(m => m.ReceivedTime <= DateTime.Now - new TimeSpan(7, 0, 0, 0)).Select(m => m);
int itemscount = mail.Count<Outlook.MailItem>(); // out of memory here
.....
sorgu = ..., açıkça bir tembel yüktür. Sonraki çağrı yürütme, ve ben ya da bellek veya tükendi. Asıl içeriği istemiyorum, sadece sayım.
Peki, son yedi gün içinde alınan e-postaların sayısını nasıl elde edersiniz?
.Restrict'in farkındayım, ancak Msft belgeleri burada gerçekten eksik. Başkalarının da bu konuya sahip olması durumunda yardımcı olan başka bir SO postu buldum; http://stackoverflow.com/questions/17169646/microsoft-office-interop-outlook-items-restrict-not-working-correctly – JamieMeyer