AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Email versenden mit Outlook Online bzw. Outlook Hybrid
Thema durchsuchen
Ansicht
Themen-Optionen

Email versenden mit Outlook Online bzw. Outlook Hybrid

Ein Thema von rdeutsch · begonnen am 8. Mai 2024 · letzter Beitrag vom 9. Okt 2025
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.810 Beiträge
 
Delphi 12 Athens
 
#11

AW: Email versenden mit Outlook Online bzw. Outlook Hybrid

  Alt 15. Mai 2024, 10:44
Ne alte Version auf die Schnelle gefunden.
Kann aber nicht viel zu sagen. (war damals ein jetzt ehemaliger Kollege)
Im Kommentar steht:
Code:
OfficeAdapter.exe
  /mail /to=service@example.de /bcc=mail1@example.de /cc=mail2@example.de
  /cc=mail3@example.de /head="Titel" /body="Nachrichtentext ... "
  /file="C:\Test1.txt" /file="C:\Test2.pdf" ...
Wir verwenden auch nur das TO (k.A. ob BCC und CC funktionieren).

Wir nutzen eine Klasse, welche alle Texte und Dateien bekommt und dann, je nach Setting, irgendwas zum Senden nutzt.
So gibt es hier auch noch einen Code, welcher so mal vor vielen vielen Jahren aus Eurekalog kopiert wurde.
MSDN-Library durchsuchenMAPISendMail aus der mapi32.dll (im DLLPath in HKCU und HKLM unter SOFTWARE\Clients\Mail gesucht)

Und, wie gesagt, nutzen wir aktuell vorwiegend eine *.EML, wo per Hand über eine StringList ein HTML zusammengeklöppelt wird, dass dann mit den Dateianhängen als multipart/mixed über ein TIdMessage zusammengeführt, SaveToFile und via ShellExecute im Standard-Mailprogramm geöffnet.
Wichtig: Im Header muß X-Unsent: 1 stehen, damit Outlook es auch zum Versenden lädt und nicht bloß anzeigt.
Angehängte Dateien
Dateityp: 7z OfficeAdapter.7z (146,5 KB, 12x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Mai 2024 um 10:48 Uhr)
  Mit Zitat antworten Zitat
EKON 29
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.699 Beiträge
 
Delphi 12 Athens
 
#12

AW: Email versenden mit Outlook Online bzw. Outlook Hybrid

  Alt 15. Mai 2024, 10:52
Dankeschön, schau ich mir an
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.810 Beiträge
 
Delphi 12 Athens
 
#13

AW: Email versenden mit Outlook Online bzw. Outlook Hybrid

  Alt 15. Mai 2024, 11:12
Wir hab sogar einen Automatik-Modus (der aber eigentlich kaum noch genutzt wird),
quasi mit folgenden Settings:
* per EML
* per MAPI
* per OfficeAdapter
* MAPI und wenn nicht OfficeAdapter
* OfficeAdapter und wenn nicht MAPI

Leider ging das mit der Automatik auch nicht immer, denn sowohl MAPISendMail als auch die .NET-API
behaupten manchmal es ging nicht, obwohl es erfolgreich versendet wurde,
aber auch es ging, obwohl nichts gesendet wurde.
Also entweder wurde das MailProgramm dann doppelt geöffnet oder garnicht.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Mai 2024 um 11:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.699 Beiträge
 
Delphi 12 Athens
 
#14

AW: Email versenden mit Outlook Online bzw. Outlook Hybrid

  Alt 15. Mai 2024, 11:43
Wenn man darüber nachdenkt, eigentlich totaler Irrsinn, seit Urzeiten gibt es E-Mail und E-Mail-Clients und seit dem gibt es immer
noch nichts wirklich einheitliches. E-Mails zu versenden ist ja eine grundlegende Aufgabe, die in jeder Software benötigt wird.
Sven Harazim
--
  Mit Zitat antworten Zitat
KHJ

Registriert seit: 15. Dez 2005
44 Beiträge
 
Delphi 12 Athens
 
#15

AW: Email versenden mit Outlook Online bzw. Outlook Hybrid

  Alt Gestern, 10:49
Hier ein kurzes Snippet

Code:
procedure TForm1.btnSaveEMLClick(Sender: TObject);
var
  EMLContent: TStringList;
  AttachmentStream: TFileStream;
  EncodedAttachment: TStringStream;
  Lines: TArray<string>;
  Line: string;
  I: Integer;
  Boundary, FileName: string;
begin
  with TSaveDialog.Create(nil) do
    try
      Filter := 'EML-Dateien (*.eml)|*.eml';
      DefaultExt := 'eml';
      Title := 'E-Mail speichern';

      if Execute then
      begin
        FileName := FileName;
        Boundary := '----=_Part_' + FormatDateTime('yyyymmddhhnnss', Now);

        EMLContent := TStringList.Create;
        try
          EMLContent.Add('X-Unsent: 1'); // Wichtig!
          EMLContent.Add('From: ' + EditFrom.Text);
          EMLContent.Add('To: ' + EditTo.Text);
          EMLContent.Add('Cc: ' + EditCc.Text);
          EMLContent.Add('Bcc: ' + EditBcc.Text);
          EMLContent.Add('Subject: ' + EditSubject.Text);
          EMLContent.Add('MIME-Version: 1.0');
          EMLContent.Add('Content-Type: multipart/mixed; boundary="' + Boundary + '"');
          EMLContent.Add('');
          EMLContent.Add('This is a multi-part message in MIME format.');
          EMLContent.Add('');

          // Textteil
          EMLContent.Add('--' + Boundary);
          EMLContent.Add('Content-Type: text/plain; charset="utf-8"');
          EMLContent.Add('Content-Transfer-Encoding: 7bit');
          EMLContent.Add('');
          EMLContent.Add(MemoBody.Text);
          EMLContent.Add('');

          // Anhang
          if FileExists(EditAttachment.Text) then
          begin
            EMLContent.Add('--' + Boundary);
            EMLContent.Add('Content-Type: application/octet-stream; name="' + ExtractFileName(EditAttachment.Text) + '"');
            EMLContent.Add('Content-Transfer-Encoding: base64');
            EMLContent.Add('Content-Disposition: attachment; filename="' + ExtractFileName(EditAttachment.Text) + '"');
            EMLContent.Add('');

            AttachmentStream := TFileStream.Create(EditAttachment.Text, fmOpenRead or fmShareDenyWrite);
            EncodedAttachment := TStringStream.Create('', TEncoding.UTF8);
            try
              TNetEncoding.Base64.Encode(AttachmentStream, EncodedAttachment);

              // Inhalt als String holen und in Zeilen aufteilen
              Lines := EncodedAttachment.DataString.Split([sLineBreak]);

              // Zeilenweise in EMLContent einfügen
              for I := 0 to High(Lines) do
              begin
                Line := Trim(Lines[I]);
                if Line <> '' then
                  EMLContent.Add(Line);
              end;
            finally
              AttachmentStream.Free;
              EncodedAttachment.Free;
            end;
          end;

          EMLContent.Add('');
          EMLContent.Add('--' + Boundary + '--');
          EMLContent.SaveToFile(FileName);

          ShellExecute(0, 'open', PChar(FileName), nil, nil, SW_SHOWNORMAL);
        finally
          EMLContent.Free;
        end;
      end;
    finally
      Free;
    end;
end;
Karlheinz Jansen
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
737 Beiträge
 
Delphi 12 Athens
 
#16

AW: Email versenden mit Outlook Online bzw. Outlook Hybrid

  Alt Gestern, 11:50
Hier ein kurzes Snippet
Ein gutes Beispiel wieso man with-Statements tunlichst vermeiden sollte. Was glaubst Du was

  Filename := Filename; da macht?
Peter Below
  Mit Zitat antworten Zitat
KHJ

Registriert seit: 15. Dez 2005
44 Beiträge
 
Delphi 12 Athens
 
#17

AW: Email versenden mit Outlook Online bzw. Outlook Hybrid

  Alt Gestern, 12:57
Good catch!
Danke für den Hinweis.
Karlheinz Jansen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 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