6

電子メールを取り出し、それらを一通り見て、既読としてマークし、並べ替えさえできます。しかし、ReceivedTime で制限しようとすると、うまくいかないようです。入力した日付/時刻に関係なく、何も返されません。制限を削除すると、Sort の動作に基づいて ReceivedTime が有効であることはわかっています。助言がありますか?

Application app = new Application();
NameSpace outlookNs = app.GetNamespace("MAPI");

Microsoft.Office.Interop.Outlook.Folders folders = outlookNs.Folders[ohOptions.PSTName].Folders
Microsoft.Office.Interop.Outlook.Items items = folders["Inbox"].Items;

DateTime dt = DateTime.Now.Subtract(new TimeSpan(1,0,0));
items = items.Restrict("[ReceivedTime] > '" + dt.ToString("MM/dd/yyyy hh:mm:ss tt") + "'");

items.Sort("[ReceivedTime]", OlSortOrder.olAscending);

foreach (MailItem item in items)
{
    String from = item.SenderEmailAddress;
}
4

2 に答える 2

11

問題が見つかりました。これらの日付/時刻のフォーマットについて言及しているものはないように見えるため、3 日しかかかりませんでした。秒や午前/午後がそこにあるのが好きではないようです。ミリタリー タイムを使用し、秒を削除すると、正しく機能します。

items = items.Restrict("[ReceivedTime] > '" + dt.ToString("MM/dd/yyyy HH:mm") + "'");
于 2013-06-19T14:09:40.183 に答える
0

現在のロケールの日付形式が dd/MM/yyyy ではなく、本当に MM/dd/yyyy であることを確認してください。

于 2013-06-18T14:13:37.287 に答える