![]() |
outlook mail auslesen
Hallo zusammen
Vor folgendem Problem stehe ich zur zeit. ich will ein mail das im posteingang von outlook ist den Anhang auslesen. dieser Anhang ist ein xls. was bis jetzt problemlos geht ist der zugruff auf den posteingang aber leider nicht auf die einzelnen mails. Der folgende code habe ich mal geschrieben.
Delphi-Quellcode:
das problem ist die zeile in der for schlaufe. dort erhalte ich den fehler "Klasse besitzt keine Standardeigenschaft". Verstehe nicht ganz was ich falsch mache.
Outlook := CoOutlookApplication.Create;
NmSpace := Outlook.GetNamespace('MAPI'); NmSpace.Logon('', '', False, False); Inbox := NmSpace.GetDefaultFolder(olFolderInbox); NewMail := (Inbox.UnreadItemCount > 0); if NewMail then ShowMessage(Format('Ungelesene Mails in der Inbox: %d', [Inbox.UnreadItemCount])); for i := 1 to Inbox.Items.Count do begin oiItem := Inbox.Items[i]; end; Grüsse aus der noch sonnigen schweiz!! christophe |
Re: outlook mail auslesen
Inbox.Items ist ein Objekt, kein Array.
Delphi-Quellcode:
Hätte das Objekt eine Standardeigenschaft gesetzt, wäre deine verkürzte Schreibweise zulässig.
for i := 1 to Inbox.Items.Count do
begin oiItem := Inbox.Items.Item[i]; end; |
Re: outlook mail auslesen
Hallo
Danke für deine Antwort. Aber dies habe ich auch schon Probiert. Wenn ich dies so schreibe erhalte ich den fehler "Nicht genügend wirkliche Parameter". Weis nicht was ich einem Array noch für "wirkliche" Parameter übergeben soll. Hier mal der ganze Code:
Delphi-Quellcode:
Outlook := CoOutlookApplication.Create;
NmSpace := Outlook.GetNamespace('MAPI'); NmSpace.Logon('', '', False, False); Inbox := NmSpace.GetDefaultFolder(olFolderInbox); NewMail := (Inbox.UnreadItemCount > 0); ShowMessage(BoolToStr(NewMail)); if NewMail then ShowMessage(Format('Ungelesene Mails in der Inbox: %d', [Inbox.UnreadItemCount])); for i := 0 to Inbox.Items.Count do begin oiItem := Inbox.Items.Item[i]; end; |
Re: outlook mail auslesen
Hello,
Try to run from index 1 instead of index 0...
Delphi-Quellcode:
Better to run from last item to the first. If you delete in a loop a mailitem then the order of the mailitems will change and ofcourse the count will also change.
Function TMailTrans.GetInboxItemBySender(aSender : String) : Variant;
Var Index : Integer; aMailItem : Variant; Begin Result:=NULL; For Index := InboxFolder.Items.Count downto 1 do begin aMailItem:=InboxFolder.Items.Item(Index); If aMailItem.sendername=aSender Then Result:=aMailItem; end; End; Greets, Delphi-Lover. |
Re: outlook mail auslesen
Danke an Delphi-Lover
habe den fehler gefunden lag nur an den Klammern. Statt [i] -> (i). Hier noch mal der ganze funktionierende Code:
Delphi-Quellcode:
Ich lese die ungelesenen nachrachten aus dem Posteingang aus.
Outlook := CoOutlookApplication.Create;
NmSpace := Outlook.GetNamespace('MAPI'); NmSpace.Logon('', '', False, False); Inbox := NmSpace.GetDefaultFolder(olFolderInbox); NewMail := (Inbox.UnreadItemCount > 0); ShowMessage(BoolToStr(NewMail)); if NewMail then ShowMessage(Format('Ungelesene Mails in der Inbox: %d', [Inbox.UnreadItemCount])); for i := 1 to Inbox.UnreadItemCount do begin aMailItem := Inbox.Items.Item(i); ShowMessage(aMailItem.To); end; Danke für euer Hilfe :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz