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/)
-   -   Delphi Outlook steuern; Bezug auf eine neue E-Mail (https://www.delphipraxis.net/208682-outlook-steuern%3B-bezug-auf-eine-neue-e-mail.html)

Cyberaxx 6. Sep 2021 13:33

Outlook steuern; Bezug auf eine neue E-Mail
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo liebe Community,

über ein Programm erstelle ich in Outlook eine neue E-Mail mit Body und Anhang.

Delphi-Quellcode:
procedure TForm3.btn3Click(Sender: TObject);
var
  Outlook: OLEVariant;
  MailItem: Variant;
  SL: TStringList;
  S: string;
begin
  try
    Outlook := GetActiveOleObject('Outlook.Application');
  except
    Outlook := CreateOleObject('Outlook.Application');
  end;
  MailItem := Outlook.CreateItem(0);
  MailItem.Subject := edtSubject.Text;
  MailItem.Attachments.Add(Filename);
  { 20200812 - Automatik Handbücher anhängen }
  if (edtAutomation.Text = 'KME1') then
    MailItem.Attachments.Add('....pdf')
  else
  if ((edtAutomation.Text = 'KMB4') or (edtAutomation.Text = 'KM4.1')) then
    MailItem.Attachments.Add('....pdf');

  if edtDokTyp.Text = 'RE' then
  begin
    SL := TStringList.Create;
    try
      SL.LoadFromFile('..\Vorlagen\default_rechnungsausgang.html');

      S := SL.Text;
      S := StringReplace(S,'@FULLNAME@',Name_,[rfReplaceAll]);
      S := StringReplace(S,'@USERDEF1@',Abteilung_,[rfReplaceAll]);
      S := StringReplace(S,'@USERDEF2@',Position_,[rfReplaceAll]);
      S := StringReplace(S,'@PHONE@',Telefon_,[rfReplaceAll]);
      S := StringReplace(S,'@FAX@',Fax_,[rfReplaceAll]);
      S := StringReplace(S,'@EMAIL@',EMail_,[rfReplaceAll]);
      SL.Text := S;

      MailItem.HTMLBody := SL.Text;
    finally
      SL.Free;
    end;
  end
  else
  if edtDokTyp.Text = 'AB' then
  begin
    SL := TStringList.Create;
    try
      SL.LoadFromFile('..\Vorlagen\default_auftrag_ausgang.html');

      S := SL.Text;
      S := StringReplace(S,'@FULLNAME@',Name_,[rfReplaceAll]);
      S := StringReplace(S,'@USERDEF1@',Abteilung_,[rfReplaceAll]);
      S := StringReplace(S,'@USERDEF2@',Position_,[rfReplaceAll]);
      S := StringReplace(S,'@PHONE@',Telefon_,[rfReplaceAll]);
      S := StringReplace(S,'@FAX@',Fax_,[rfReplaceAll]);
      S := StringReplace(S,'@EMAIL@',EMail_,[rfReplaceAll]);
      SL.Text := S;

      MailItem.HTMLBody := SL.Text;
    finally
      SL.Free;
    end;
  end
  else
  if edtDokTyp.Text = 'TG' then
  begin
    SL := TStringList.Create;
    try
      SL.LoadFromFile('..\Vorlagen\default_tg_ausgang.html');

      S := SL.Text;
      S := StringReplace(S,'@FULLNAME@',Name_,[rfReplaceAll]);
      S := StringReplace(S,'@USERDEF1@',Abteilung_,[rfReplaceAll]);
      S := StringReplace(S,'@USERDEF2@',Position_,[rfReplaceAll]);
      S := StringReplace(S,'@PHONE@',Telefon_,[rfReplaceAll]);
      S := StringReplace(S,'@FAX@',Fax_,[rfReplaceAll]);
      S := StringReplace(S,'@EMAIL@',EMail_,[rfReplaceAll]);
      SL.Text := S;

      MailItem.HTMLBody := SL.Text;
    finally
      SL.Free;
    end;
  end;

  MailItem.Display;
  Outlook.ActiveWindow.Activate;
Wie habe ich allerdings die Möglichkeit nachher auf die bereits erstelle E-Mail noch einmal Bezug zu nehmen bzw. generell auf E-Mails im Entwurfmodus zugreifen?

Anhang 54285

Das Programm ist ein kleiner PDF Viewer mit der Funktion das Dokument direkt in einer E-Mail zu versenden in dem ich eine erstelle.
Wenn ich nun ein anderes Dokument öffne (neue Instanz), würde ich gerne dieses Dokument ebenfalls an die bereits erstellte E-Mail packen.

Leider bin ich bisher mit meinen Suchbegriffen nicht fündig geworden.

Mit freundlichen Grüßen
Daniel

mmw 6. Sep 2021 21:21

AW: Outlook steuern; Bezug auf eine neue E-Mail
 
hallo,
vielleciht hilft das weiter

https://www.xing.com/communities/pos...ern-1002110387

https://docs.microsoft.com/de-de/off...defaultfolders

Gruß

Cyberaxx 7. Sep 2021 09:18

AW: Outlook steuern; Bezug auf eine neue E-Mail
 
Hallo mmw,

ja das war ein guter Hinweis aber ich bekomme leider nicht die Anzahl an richtigen Elementen angezeigt.

Geöffnet ist Outlook, neue Mail (Hier Mail1), neue Mail (Mail Nummer 2) und neue Mail (Unbenannt).
Im Ordner Entwürfe werden aber nur zwei E-Mails angezeigt. Die Mail (Unbenannt) taucht dort aber nicht auf, erst wenn diese Mail einen Betreff bekommt mit einer kleinen Zeitverzögerung.

Ich muss mal schauen wie es sich auf mein Programm auswirkt.

Cyberaxx 7. Sep 2021 09:35

AW: Outlook steuern; Bezug auf eine neue E-Mail
 
Leider klappt das so noch nicht. Wenn ich aus meinem Programm die E-Mail erstelle hat sie zwar einen Betreff aber es dauert elendig lange bis sie im Ordner Entwürfe sichtbar wird. :(

Edelfix 7. Sep 2021 09:50

AW: Outlook steuern; Bezug auf eine neue E-Mail
 
Laut folgender Beschreibung hat das Mailitem die Funktion "Safe".

https://docs.microsoft.com/de-DE/off...tlook.MailItem

Cyberaxx 7. Sep 2021 14:25

AW: Outlook steuern; Bezug auf eine neue E-Mail
 
Das ist natürlich nicht ganz die passende Lösung aber sie funktioniert.

Vielen Dank für die Tips. :)


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