#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;
Я исправил две разные вещи. Спасибо за вашу помощь, Дмитрий