Outlook: получать непрочитанные электронные письма

#delphi #outlook

#дельфы #мировоззрение #delphi #outlook

Вопрос:

Я использую 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));
  

Я хочу иметь непрочитанные электронные письма. То есть список электронных писем со свойством Непрочитанный или: Непрочитанный = true.
есть ли способ сделать это, пожалуйста?
Спасибо за вашу помощь

Комментарии:

1. Что вы уже сделали сами? Пожалуйста, покажите свой код. Где именно вы застряли?

Ответ №1:

Вызов MAPIFolder.Items.Restrict (возвращает коллекцию элементов) с запросом типа [Unread] = true

Комментарии:

1. Я использовал свойство: InboxFolder. Товары. Ограничить (‘[Непрочитанное] = FALSE’) Я хочу проверить, было ли прочитано электронное письмо или нет. Если оно было прочитано, в ListView1 добавляется текст: «Электронное письмо прочитано». Вот мой код: 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 текст («Прочитанное электронное письмо») не добавляется. В чем моя ошибка, пожалуйста?

2. Я не уверен, что этот код делает, когда вы сравниваете объект Items с совершенно новым объектом Items, возвращаемым Restrict. Конечно, это не одно и то же. Но зачем тебе вообще это делать?

3. Я дебютирую с Outlook. Сейчас мне немного сложно. Я дебютирую с Outlook. Сейчас мне немного сложно. Позвольте мне объяснить: я загружаю электронные письма из Outlook в TListView, затем я хочу проверить, было ли прочитано электронное письмо или нет. Если оно было прочитано, в ListView1 добавляется текст: «Прочитанное электронное письмо» в столбце. Пожалуйста, как мне сделать то, что я хочу?

4. При циклическом просмотре коллекции элементов проверьте MailItem.Unread свойство. Но поскольку вы запрашиваете только непрочитанные письма, этот тест не дает вам соответствия — вы уже знаете значение непрочитанного свойства.

5. Я исправил свою ошибку: InboxFolder.Items.Item (i) as MailItem; Я исправил две разные вещи. Спасибо за вашу помощь, Дмитрий