2016-04-05 27 views
0

Belirli bir günde bir e-posta bulmaya çalışıyorum ve ekleri kaydediyorum. Kodum aşağıda.Gelen kutusuyla döngü ve ekleri kaydetme

Sahip olduğum sorun, gelen kutumdaki öğelerden hiçbirinin hata ayıklaması olduğunda, gelen kutumda görmeme rağmen MailItem türünün hiçbiri değil. Neyi kaçırıyorum? Hata ayıklama

Güncelleme

gelen kutumda e-posta sayısını ise 4890 gösterir ben oFld.Items.Count bak. Ben doğru

public void SaveAttachment(DateTime dateEmail, string emailSubject, string saveLocation) 
     { 
      Outlook.Application oApp = new Outlook.Application(); 
      Outlook.NameSpace oNs = oApp.GetNamespace("MAPI"); 
      Outlook.MAPIFolder oFld = oNs.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); 

      foreach (object item in oFld.Items) 
      { 
       if (item.GetType() == typeof(Outlook.MailItem)) 
       { 
        Outlook.MailItem oMail = (Outlook.MailItem)item; 

        if (oMail.ReceivedTime < dateEmail) 
         return; 

        if (oMail.ReceivedTime.Date == dateEmail) 
        { 
         if (oMail.Subject.Contains(emailSubject)) 
         { 
          for (int i = 0; i < oMail.Attachments.Count; i++)         
           oMail.Attachments[i].SaveAsFile(saveLocation + oMail.Attachments[i].FileName);         
         } 
        } 
       } 
      } 
     } 
+1

Ne tür * are * onlar? –

+0

system .__. ComObject öğeyi girdigimde item.GetType(). ToString() anında pencerede – mHelpMe

cevap

1

bu deneyin item.GetType bölümünü kullanarak değilim düşünün:

foreach (object item in oFld.Items) 
    { 
     MailItem mailItem = item as MailItem; 

     if (mailItem != null) 
     { 
      //blablabla 
     } 
    } 

Bazı insanlar için çalışıyor gibi görünüyor.

+0

sayesinde çalışır. Öğe bir MailItem değil, randevu öğesiyse bir istisna atarsa ​​ne olur? – mHelpMe

+1

Hayır, "as" kullanılarak yapılan değişken, değişken türden değilken null değerini döndürür. – Zalomon

İlgili konular