Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi email speichern (https://www.delphipraxis.net/3319-email-speichern.html)

Hansa 6. Mär 2003 17:54


email speichern
 
Hi,

weiß vielleicht jemand, wie man folgendes erreichen kann: die eingegangenen emails (aber nur eines bestimmten Absenders) sollen irgendwo gespeichert werden. Möglichst automatisch. Jetzt weiß ich erstens nicht, wie und wo die gespeichert werden, sobald sie empfangen wurden, welches Dateiformat die haben und was mit den Anhängen überhaupt los ist und wie ich da dran komme.

Das empfangen der emails interessiert mich eigentlich nicht. Das kann von mir aus auch Outlook machen, aber danach muß ich diese in der Reihenfolge ihres Eingangs in eine DB schreiben, zwecks Weiterbearbeitung, Sortierung usw. Hoffe, daß das jemand versteht.

Helld_River 18. Mär 2003 14:47

Hi !
Hier eine Variante, wie man das ganze per Automation mit Outlook machen kann :
Outlook-Serverkompo auf Form:

benötigte Variablen:

Code:
var
  oNS : NameSpace;
  foldInbox     : MAPIFolder;
  mItem : Mailitem;
mit Outlook connecten:
Code:
  try
    OutApp.Connect;
  except
    Prot('');
    Prot('FEHLER SCHWERWIEGEND: Verbindung zu Outlook gescheitert !');
    Prot('Bitte kontaktieren Sie den Systemadministrator !');
    exit;
  end;
NameSpace holen:
Code:
  oNS := OutApp.GetNamespace('MAPI');
Logon to NameSpace

Code:
  oNS.Logon('','',false,false);
Folder Posteingang holen
Code:
  foldInBox:=oNS.GetDefaultFolder(olFolderInbox);
Anzahl der Mails bestimmen
Code:
  AnzMails:=folder.Items.Count;
Wenn keine Mails dann abbrechen:

Code:
  if AnzMails=0 then
  begin
    Prot(' Es stehen keine Mails zum Import im angegebenen Ordner bereit !!!');
    exit;
  end;
abarbeitung der einzelnen Mails.
Wichtig ist hierbei, dass die Mails in weitere Unterordner verschoben werden, weil ich immer auf die erste Mail im Posteingang zugreife.
Code:
 i:=1;
  while (i<=anzMails) do
  begin
    mItem := folder.Items.Item(1) as _MailItem;
    Prot(' Mail Nr. '+IntToStr(i));
    str1:=ANSIUPPERCASE(mItem.SenderName);
    if str1<>gesuchterAbsender then
    begin
      //falscher Absender
      Prot('   keine Übereinstimmung beim Absender ('+str1+')');
      Prot('   Mailverarbeitung abgebrochen !');
      Prot('   Mail wurde in den Fehlerordner verschoben !');
      inc(anzError);
      mItem.Move(FolderError);
    end
    else
    begin
      ...//--> was auch immer Du mit der Mail machen willst
      mItem.Move(folderImported);
    end;
    inc(i);
  end;
Disconnecten:
Code:
  OutApp.Disconnect;
So, ich hoffe, dass ich nichts vergessen habe und dass dir das weiterhilft.

Wenn Du das Objektmodel von Outlook brauchst, dann sag einfach nochmal bescheid. Will es nicht dranhängen, da es etwas größer ist (PDF-Format).

WICHTIG: Die Serverkompos funktionieren nicht mit Outlook-Express !!!

Wenn noch fragen sind, einfach posten !!!

Alexander 18. Mär 2003 14:50

...sonst kannst du das auch relativ einfach mit den Indy-Komponenten machen.
Da ist auch eine Demo bei. Nur das mit dem Speichern der Mails steht dort nicht. Aber da kann man ja eine einfache DAtenbank nehmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:21 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