1

我在 2013 年 6 月 25 日 14:52:37 -0400 (EDT) 收到了 Outlook 邮件,它显示:

Wed 6/26/2013 12:29 AM  (in GMT).

现在在我的 C# 窗口应用程序中,当我搜索邮件项目时

此邮件在收到日期 6 月 26 日至 6 月 28 日之间未显示(如果我们在收到日期 6 月 25 日至 6 月 28 日之间进行搜索,则会显示)我的搜索条件如下:

"urn:schemas:httpmail:datereceived >= '6/26/2013' AND  "urn:schemas:httpmail:datereceived"" <='6/28/2013'

如何将我的搜索应用到显示的日期和时间而不是标题信息中的信息?

4

1 回答 1

2

我的答案在这里

  using OutLook = Microsoft.Office.Interop.Outlook; 

    OutLook.Application outlookObj;
     OutLook.NameSpace olintNS; 
    OutLook.MailItem mailitem; 
    mailitem = outlookObj.CreateItem(OutLook.OlItemType.olMailItem);
     OutLook.PropertyAccessor pa = mailitem.PropertyAccessor; 

    DateTime datStartUTC = pa.LocalTimeToUTC(Convert.ToDateTime("6/26/2013"));
     DateTime datEndUTC =pa.LocalTimeToUTC(Convert.ToDateTime("6/28/2013").AddDays(1)); 

// 我的搜索条件

     string filter = @"@SQL=((""urn:schemas:httpmail:datereceived"" >= '" + datStartUTC + @"' AND ""urn:schemas:httpmail:datereceived"" <='" + datEndUTC + @"' ) OR (""urn:schemas:httpmail:date"" >= '" + datStartUTC + @"' AND ""urn:schemas:httpmail:date"" <='" + datEndUTC + @"' ) ) ";
 OutLook.Items items = oFolder.Items.Restrict(filter);

 // Now I can Put searched item in to My DataTable

foreach (OutLook.MailItem mail in items) 
{ 
DataRow dr = dtInbox.NewRow(); 
dr["TO"] = mail.To; 
dr["From"] = mail.SenderEmailAddress;
dr["Subject"] = mail.Subject;
dr["EntryID"] = mail.EntryID; 
dr["folderStoreID"] = oFolder.StoreID; dr["Date"] = mail.ReceivedTime;//? (mail.SentOn != null ? mail.SentOn.ToString("MM/dd/yyyy") : "") : (mail.ReceivedTime); dtInbox.Rows.Add(dr);
 }

于 2013-06-27T10:31:23.173 回答