AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Outllook 365 MAPI HTML
Thema durchsuchen
Ansicht
Themen-Optionen

Outllook 365 MAPI HTML

Ein Thema von haentschman · begonnen am 14. Jul 2021 · letzter Beitrag vom 20. Jul 2021
Antwort Antwort
Klapauzius

Registriert seit: 8. Feb 2018
Ort: Region Bern (Schweiz)
74 Beiträge
 
Delphi 12 Athens
 
#1

AW: Outllook 365 MAPI HTML

  Alt 15. Jul 2021, 09:05
...
Auf was soll man sich verlassen?
...
ich würde mich da schon auf https://validator.w3.org/check verlassen.
Ein kurzer Check mit der Korrektur der angemeckerten Elemente (mir gefällt zwar mehr als das angemeckerte nicht, _ich_ würde mehr abändern) ergibt folgenden validen HTML Code:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
   <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8">
   <TITLE></TITLE>
</HEAD>
<BODY LANG="de-DE" TEXT="#000000" DIR="LTR">
<TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0 STYLE="page-break-before: always, WIDTH:100%">
   <COL WIDTH=450>
   <COL WIDTH=450>
   <TR>
      <TD HEIGHT=20 BGCOLOR="#1618A1">
         <P ALIGN=LEFT><FONT FACE="Arial" COLOR="#ffffff" SIZE=3>Blubb</FONT></P>
      </TD>
      <TD BGCOLOR="#1618A1">
         <P ALIGN=LEFT><FONT FACE="Arial" COLOR="#ffffff" SIZE=3>Serviceauftrag Nr.: #SNR</FONT></P>
      </TD>
   </TR>
   <TR>
      <TD HEIGHT=25   BGCOLOR="#1618A1">
        <TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0 STYLE="page-break-before: always, width:100%">
           <TR>
          <TD>
               <P ALIGN=LEFT><FONT FACE="Arial" COLOR="#ffffff" SIZE=3>Bla Str. 4</FONT></P>
            </TD>
           </TR>
           <TR>
          <TD>
               <P ALIGN=LEFT><FONT FACE="Arial" COLOR="#ffffff" SIZE=3>08150 JwD</FONT></P>
            </TD>
           </TR>
         </TABLE>  
      </TD>
      <TD BGCOLOR="#1618A1">
         <BR>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
         <BR>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
         <P ALIGN=LEFT><FONT FACE="Arial" SIZE=3>Sehr geehrte Damen und Herren,</FONT></P>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
         <P ALIGN=LEFT><FONT FACE="Arial" SIZE=3>die St&ouml;rung mit der Nummer: #SNR  wurde abgeschlossen.</FONT></P>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
         <BR>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
        <TABLE BORDER=0 CELLPADDING=2 CELLSPACING=0 STYLE="page-break-before: always, width:100%">
           <TR>
          <TD>
               <P ALIGN=LEFT><FONT FACE="Arial" SIZE=3>#STNAME / Filiale: #STFILIALE</FONT></P>
            </TD>
           </TR>
           <TR>
          <TD>
               <P ALIGN=LEFT><FONT FACE="Arial" SIZE=3>#STSTRASSE</FONT></P>
            </TD>
           </TR>
            <TR>
          <TD>
               <P ALIGN=LEFT><FONT FACE="Arial" SIZE=3>#STPLZ #STORT</FONT></P>
            </TD>
           </TR>
         </TABLE>  
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
         <BR>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
         <P ALIGN=LEFT><FONT FACE="Arial" SIZE=3>Wir danken f&uuml;r Ihren Auftrag.</FONT></P>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#ffffff">
         <BR>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#1618A1">
         <P ALIGN=LEFT><FONT FACE="Arial" COLOR="#ffffff" SIZE=3>Das ist eine automatisch generierte
         Mail. Bitte antworten sie nicht darauf.</FONT></P>
      </TD>
   </TR>
   <TR>
      <TD COLSPAN=2 HEIGHT=20 BGCOLOR="#1618A1">
         <P ALIGN=LEFT><FONT FACE="Arial" COLOR="#ffffff" SIZE=3>F&uuml;r Fragen, R&uuml;ckmeldungen
         oder Informationen benutzen sie bitte die Mailadresse:
         <A HREF="mailto:bla@Blubb.de" style="color:#A9A9A9">Bla@Blubb.de</A></FONT></P>
      </TD>
   </TR>
</TABLE>
</BODY>
</HTML>
Albert
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#2

AW: Outllook 365 MAPI HTML

  Alt 15. Jul 2021, 11:16
Danke für deine Hilfe...

Ich habe die Datei geändert und nun ein valides HTML. (Bild1)
Ergebnis: (Bild2)
Angehängte Grafiken
Dateityp: png Mail_1.png (68,9 KB, 49x aufgerufen)
Dateityp: jpg Valid.jpg (58,8 KB, 34x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#3

AW: Outllook 365 MAPI HTML

  Alt 19. Jul 2021, 06:39
...schieb.

Bevor ich das TOutlook ausprobiere...geht das nur direkt oder über den Client?

Geändert von haentschman (19. Jul 2021 um 07:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.437 Beiträge
 
Delphi 12 Athens
 
#4

AW: Outllook 365 MAPI HTML

  Alt 20. Jul 2021, 12:59
Moin...

Meine Lösung heißt: TOutlookApplication

In der Konfiguration kann man nun wählen welcher Client am Start ist.

Auszüge:
Delphi-Quellcode:
function TToolsMail.SendMailClient: Boolean;
var
  FunctionResult: Boolean;

  function SendMAPI: Boolean;

  {$REGION 'Inline'}
    procedure FillMailRecipents;
    var
      I: Integer;
      RecipientItem: TCollectionItem;
    begin
    {$REGION 'Code'}
      FMailStandardClient.Recipients.Clear;
      for I := 0 to FMailMessage.ToList.Count - 1 do
      begin
        RecipientItem := FMailStandardClient.Recipients.Add;
        TRecipientItem(RecipientItem).Address := FMailMessage.ToList.Items[I].Email;
      end;
    {$ENDREGION}
    end;

    procedure FillMailAttachments;
    var
      I: Integer;
    begin
    {$REGION 'Code'}
      FMailStandardClient.Attachments.Clear;
      for I := 0 to FAttachments.Count - 1 do
      begin
        FMailStandardClient.Attachments.Add(FAttachments[I]);
      end;
    {$ENDREGION}
    end;

    procedure FillMailBody;
    begin
    {$REGION 'Code'}
      FMailStandardClient.Subject := FMailMessage.Subject;
      FMailStandardClient.Text := FMailMessage.Html.Strings;
    {$ENDREGION}
    end;
  {$ENDREGION}

  begin
    FillMailBody;
    FillMailRecipents;
    FillMailAttachments;

    Result := FMailStandardClient.Execute;
  end;

  function SendOutlook: Boolean;
  var
    Outlook: TOutlookApplication;
    Mail: OleVariant;

  {$REGION 'Inline'}
    procedure FillMailRecipents;
    var
      List: TStringList;
    begin
    {$REGION 'Code'}
      List := TStringList.Create;
      try
        List.Delimiter := ';';
        FMailMessage.ToList.GetEmailList(List);
        Mail.To := List.DelimitedText;
      finally
        List.Free;
      end;
    {$ENDREGION}
    end;

    procedure FillMailAttachments;
    var
      I: Integer;
    begin
    {$REGION 'Code'}
      for I := 0 to FAttachments.Count - 1 do
      begin
        Mail.Attachments.Add(FAttachments[I]);
      end;
    {$ENDREGION}
    end;

    procedure FillMailBody;
    begin
    {$REGION 'Code'}
      Mail.BodyFormat := olFormatHTML;
      Mail.Subject := FMailMessage.Subject;
      Mail.GetInspector;
      Mail.HTMLBody := OleVariant(FMailMessage.Html.Strings.Text) + Mail.HTMLBody;
    {$ENDREGION}
    end;
  {$ENDREGION}

  begin
    Result := True;
    Outlook:= TOutlookApplication.Create(nil);
    try
      Mail := Outlook.CreateItem(olMailItem);

      FillMailBody;
      FillMailRecipents;
      FillMailAttachments;

      try
        Mail.Display;
      except
        Result := False;
      end;
    finally
      Outlook.Free;
    end;
  end;

begin
  Result := True;
  try
    FunctionResult := False;

    FMail.Open;
    try
      CreateMailMessage;

      case FPreferences.PreferencesMail.ClientType of
        cltMAPI:
        begin
          FunctionResult := SendMAPI;
        end;
        cltOutlook:
        begin
          FunctionResult := SendOutlook;
        end;
      end;

      if FunctionResult then
      begin
        WriteMailDB;
        if Assigned(FOnMailSend) then
        begin
          FOnMailSend(Self, FMailMessage.ToList.EmailAddresses, FMailMessage.Subject);
        end;
      end;
    finally
      FMail.Close;
    end;
  except
    on E: System.SysUtils.Exception do
    begin
      if Assigned(FOnMailError) then
      begin
        FOnMailError(Self, FReceipients, FMailMessage.Subject, E.Message);
      end;
      Result := False;
    end;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:10 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