Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Mailitem nach senden abspeichern (https://www.delphipraxis.net/153068-mailitem-nach-senden-abspeichern.html)

JannesDKS 19. Jul 2010 18:46

Mailitem nach senden abspeichern
 
Hallo Leute,

ich habe da ein kleines Problem:

ich zeige ein Mailitem modal an und will, nachdem der user die Mail gesendet hat diese abspeichern.
Beispielcode

Delphi-Quellcode:
     Mailitem.display(true); // Modal anzeigen
     if not DirectoryExists('C:mails\') then
       ForceDirectories('C:\mails\');
     MailItem.SaveAs('C:\mails\123.msg',olMSG);
Das problem ist ja, dass nach dem Senden die Mail erst in den Ordner postausgang und dann in Gesendete Objekte wandert.
Deswegen geht mein Code schonmal nicht ;-)
Hat jemand vielleicht schonmal sowas gemacht?
LG

Jannes

sx2008 19. Jul 2010 20:02

AW: Mailitem nach senden abspeichern
 
Du könntest die Absender-EMail-Adresse als BCC eintragen und bekommst so automatisch eine Kopie der versendeten EMail.
Das funktioniert unabhängig von der Art (SMTP, Mapi oder Automatisierung von Outlook) wie die EMail versendet wird.

JannesDKS 19. Jul 2010 20:10

AW: Mailitem nach senden abspeichern
 
Moin sx2008,

hmm, das wär ja nicht die Anforderung, die Mail soll ja als msg in einer Ordnerstruktur abgelegt werden.

ich dacht grad, ich könnte das auch wie folgt machen, erscheint mir aber nich wirklich zuverlässig, dass ich die so immer erwische
Delphi-Quellcode:
 Mailitem.display(true);
 NmSpace := OutlookApplication.GetNamespace('MAPI');
  NmSpace.Logon(EmptyParam, EmptyParam, False, True);
  Folder := NmSpace.GetDefaultFolder(olFolderOutbox);
  //Folder.Display;
  MailItem := Folder.Items(1); // die mail ist jetzt im Postausgang
  if not DirectoryExists('C:mails\') then
    ForceDirectories('C:\mails\');
  MailItem.SaveAs('C:\mails\123.msg',olMSG);
:

das haben bestimmt schon viele besser als so gemacht ;-)

himitsu 19. Jul 2010 20:26

AW: Mailitem nach senden abspeichern
 
Sendet dein Programm die Mail?
Wenn ja, warum speicherst du sie dann nicht direkt (vor oder nach) dem Senden?

Ich bin mir grade nicht sicher, aber kann man Outlock nicht so einstellen, daß gesendete Mails garnicht nach Gesendet verschoben/gespeichert werden?

Delphi-Quellcode:
if not DirectoryExists('C:mails\') then
  ForceDirectories('C:\mails\');
Ich hoffe das C:mails\ (ohne \) ist hier ein Schreibfehler (zum Glück mal ohne böse Auswirkungen, an dieser Stelle).

PS: DirectoryExists ist aber sowieso nicht nötig, da ForceDirectories dieses auch prüft.

JannesDKS 20. Jul 2010 08:27

AW: Mailitem nach senden abspeichern
 
Moin himitsu,

ja, das Programm sendet die Mail, der Witz ist ja, dass der Anwender die Mail ändern können soll und ich sie erst anschließend speichere, so das die Änderungen des Anwenders mit drin sind.
Zu verhindern, dass die Mail verschoben wird, wär schonmal nicht schlecht. Dann könnte ich sie anschließend, wenn ich sie gespeichert habe, mit move in die Gesendeten Objekte verschieben. Das müsste dann aber über die Properties des MailItems gehen, an Outlook direkt darf ich keine Einstellungen ändern :-(


der Pfad wird eigentlich anders zusammengesetzt, hab ich nur für tests eben geändert, aber den Fehler werd ich sofort korrigieren ;-)


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