Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi outlook mail auslesen (https://www.delphipraxis.net/78671-outlook-mail-auslesen.html)

Christophe 9. Okt 2006 10:27


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:
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;
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.

Grüsse aus der noch sonnigen schweiz!!
christophe

shmia 9. Okt 2006 16:57

Re: outlook mail auslesen
 
Inbox.Items ist ein Objekt, kein Array.
Delphi-Quellcode:
for i := 1 to Inbox.Items.Count do
  begin
    oiItem := Inbox.Items.Item[i];
  end;
Hätte das Objekt eine Standardeigenschaft gesetzt, wäre deine verkürzte Schreibweise zulässig.

Christophe 10. Okt 2006 06:27

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;

Delphi-Lover 10. Okt 2006 08:30

Re: outlook mail auslesen
 
Hello,

Try to run from index 1 instead of index 0...

Delphi-Quellcode:
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;
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.

Greets,

Delphi-Lover.

Christophe 10. Okt 2006 09:15

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:
  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;
Ich lese die ungelesenen nachrachten aus dem Posteingang aus.

Danke für euer Hilfe :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz