Einzelnen Beitrag anzeigen

Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#1

Outlook steuern; Bezug auf eine neue E-Mail

  Alt 6. Sep 2021, 12:33
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 = 'REthen
  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 = 'ABthen
  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 = 'TGthen
  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?

greenshot_screen.png

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
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  Mit Zitat antworten Zitat