Delphi Outlook:获取未读电子邮件

Delphi Outlook:获取未读电子邮件,delphi,outlook,Delphi,Outlook,我正在应用程序中使用Outlook。要获得未读邮件的数量,我使用“UnreadItemCount”。 要获得未读邮件的数量,我使用: Inbox: MAPIFolder; NewMail: boolean; Item: TListItem; outlook, NameSpace , aMailItem : OLEVariant; i : integer; const olFolderInbox = $00000006; begin OutlookApplica

我正在应用程序中使用Outlook。要获得未读邮件的数量,我使用“UnreadItemCount”。 要获得未读邮件的数量,我使用:

   Inbox: MAPIFolder;
   NewMail: boolean;
   Item: TListItem;

  outlook, NameSpace , aMailItem : OLEVariant;
  i : integer;

const
  olFolderInbox = $00000006;
begin

OutlookApplication1.CreateObject('Outlook.Application');
NmSpace := OutlookApplication1.GetNameSpace('MAPI');
NmSpace.Logon('', '', False, False);

Inbox := NmSpace.GetDefaultFolder(olFolderInbox);
NewMail := (Inbox.UnreadItemCount > 0);
ShowMessage('Number of unread emails: ' + inttostr(Inbox.UnreadItemCount));
我想要未读的电子邮件。也就是说,具有以下属性的电子邮件列表:未读或:未读=真
请问有什么方法可以做到这一点吗?

感谢您的帮助

调用
MAPIFolder.Items.Restrict
(返回项目集合),使用类似
[Unread]=true的查询

到目前为止您自己做了什么?请出示你的密码。你到底被困在哪里?我使用了属性:InboxFolder.Items.Restrict(“[UnRead]=FALSE”),我想测试电子邮件是否已被阅读。如果已阅读,则会在ListView1中添加一条文本:“电子邮件已阅读”。这是我的代码:
如果ItemsToProcess=InboxFolder.Items.Restrict('[UnRead]=FALSE'),那么开始MaListe:=ListView1.Items.Add;标题:=“邮件已读”;MaListe.SubItems.Add(ListView1.Items.Add.SubItems[3])。问题是在ListView1中,没有添加文本(“电子邮件读取”)。请问我的错误是什么?我不确定代码是什么。您正在将Items对象与Restrict返回的全新Items对象进行比较。当然,这两者并不相同。但你为什么要这么做呢?我将在Outlook上首次亮相。现在对我来说有点难。我将首次使用Outlook。现在对我来说有点难。让我解释一下:我将Outlook中的电子邮件加载到TListView中,然后我想测试电子邮件是否已被阅读。如果已阅读,则会在列表视图1中添加一条文本:“电子邮件已阅读”列。请问,我该如何做我想做的事情?当您在items集合中循环时,请测试
MailItem.Unread
属性。但是,由于您只请求未读电子邮件,该测试不会购买匹配的邮件-您已经知道未读属性的值。我修复了我的错误:
InboxFolder.Items.Item(I)作为MailItem