【问题标题】:Outlook : Get unread emailsOutlook : 获取未读邮件
【发布时间】:2020-08-27 03:47:30
【问题描述】:

我在我的应用程序中使用 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));

我想要未读邮件。也就是说,具有 Unread 属性的电子邮件列表或:UnRead = true
请问有什么办法吗?
感谢您的帮助

【问题讨论】:

  • 到目前为止你自己做了什么?请出示您的代码。你到底卡在哪里了?

标签: delphi outlook


【解决方案1】:

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

【讨论】:

  • 我使用了属性:InboxFolder.Items.Restrict ('[UnRead] = FALSE') 我想测试电子邮件是否已被阅读。如果已阅读,则将文本添加到 ListView1:“Email Read”。这是我的代码:if ItemsToProcess = InboxFolder.Items.Restrict('[UnRead]=FALSE') then begin MaListe := ListView1.Items.Add; MaListe.Caption := 'Mail Read' ; MaListe.SubItems.Add(ListView1.Items.Add.SubItems[3]) ;。问题是在 ListView1 中,没有添加文本(“Email Read”)。请问我的错误是什么?
  • 我不知道你在比较一个 Items 对象和 Restrict 返回的全新 Items 对象时的代码是什么。当然,两者并不相同。但是你为什么要这样做呢?
  • 我正在使用 Outlook 首次亮相。现在对我来说有点困难。我正在使用 Outlook 首次亮相。现在对我来说有点困难。让我解释一下:我将 Outlook 中的电子邮件加载到 TListView 中,然后我想测试电子邮件是否已被阅读。如果已阅读,则会在 ListView1 中添加一个文本:Column 中的“Email Read”。请问,我该怎么做?
  • 当您遍历项目集合时,测试MailItem.Unread 属性。但是由于您只请求未读的电子邮件,因此该测试并不适合您 - 您已经知道 Unread 属性的值。
  • 我修正了我的错误:InboxFolder.Items.Item (i) as MailItem; 我纠正了两个不同的问题。感谢您的帮助德米特里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
相关资源
最近更新 更多