Access Mail per cdo als .htmlbody kommt teilweise bei Empfänger falsch an (HTML quelltexte)
Hallo,
ich versende aus Access Serienmails über unseren Exchange direkt per CDO ( direkt an den SMTP)
Hierbei lade ich den Richtext in eine Variable,
Sende ich Testmails am mein Postfach so stellt Outlook diese richtig dar.
Werden aber Serienmails versendet, welche ebenfalls per .To versendet werden kommt es vor, das anstatt des Textinhalts nur der HTML Text vorgeblendet wird.
Versendet habe ich sonst mit
Text aus E-Mail
<div><font face="Arial" size="2" color="black">Sehr geehrte Damen und Herren,</font></div>
<div><font face="Arial" size="2" color="black"> </font></div>
<div><font face="Arial" size="2" color="black">bla bla bla </font></div>
<div><font face="Arial" size="3" color="black"> </font></div>
<div><font face="Arial" size="2" color="black"><strong>xxxxxxxxx</strong></font></div>
<div><font face="Arial" size="3" color="black"> </font></div>
Im CDO habe ich nun einen Header voran gestellt
Kann dieses die Ursache gewesen sein, dass einfach nur ein Header gefehlt hat oder kann es sein, dass der SMTP im Hintergrund einfach ins Strauchen kommt? (ggf eine Pause nach x Mails einbinden)
Welche Vorraussetzung muss ich schaffen, dass jedes Email Programm die Email richtig darstellt, reicht hier text/html; charset=utf-8 aus?
Test an externe Emailadressen waren bisher erfolgreich (sei es per Outlook, Handy (Android) oder WebBasierten Anzeigen der Emails.
Vielleicht hat jemand bereits ein ähnliches Problem.
ich versende aus Access Serienmails über unseren Exchange direkt per CDO ( direkt an den SMTP)
Hierbei lade ich den Richtext in eine Variable,
Sende ich Testmails am mein Postfach so stellt Outlook diese richtig dar.
Werden aber Serienmails versendet, welche ebenfalls per .To versendet werden kommt es vor, das anstatt des Textinhalts nur der HTML Text vorgeblendet wird.
Versendet habe ich sonst mit
With objMessage
.Subject = EMailbetreff
.Sender = Sender ' Absender
.From = SenderName ' Absendername
.To = rs.Fields("E-Mail")
.HTMLBody = Mailtext
Text aus E-Mail
<div><font face="Arial" size="2" color="black">Sehr geehrte Damen und Herren,</font></div>
<div><font face="Arial" size="2" color="black"> </font></div>
<div><font face="Arial" size="2" color="black">bla bla bla </font></div>
<div><font face="Arial" size="3" color="black"> </font></div>
<div><font face="Arial" size="2" color="black"><strong>xxxxxxxxx</strong></font></div>
<div><font face="Arial" size="3" color="black"> </font></div>
Im CDO habe ich nun einen Header voran gestellt
With objMessage
.Subject = EMailbetreff
.Sender = Sender ' Absender
.From = SenderName ' Absendername
.To = rs.Fields("E-Mail")
strHTML = "<html>"
strHTML = strHTML & "<head>"
strHTML = strHTML & "<meta http-equiv=" & """Content-Type""" & " content=" & """text/html; charset=utf-8""" & ">" & "</head>"
strHTML = strHTML & Mailtext
.HTMLBody = strHTML
...
Kann dieses die Ursache gewesen sein, dass einfach nur ein Header gefehlt hat oder kann es sein, dass der SMTP im Hintergrund einfach ins Strauchen kommt? (ggf eine Pause nach x Mails einbinden)
Welche Vorraussetzung muss ich schaffen, dass jedes Email Programm die Email richtig darstellt, reicht hier text/html; charset=utf-8 aus?
Test an externe Emailadressen waren bisher erfolgreich (sei es per Outlook, Handy (Android) oder WebBasierten Anzeigen der Emails.
Vielleicht hat jemand bereits ein ähnliches Problem.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 222481
Url: https://administrator.de/forum/access-mail-per-cdo-als-htmlbody-kommt-teilweise-bei-empfaenger-falsch-an-html-quelltexte-222481.html
Ausgedruckt am: 05.04.2025 um 13:04 Uhr
18 Kommentare
Neuester Kommentar
Hallo Thomas,
wenn du eine universelle Mail gestalten willst solltest du zusätzlich den normalen "Body" auch mit Text(ohne Formatierung) füllen denn nicht jeder ließt seine Mails in HTML sondern hat z.B. seinen Mailclient so eingestellt das er nur "Text" anzeigt. Dann greift der Mailclient auf den Plain-Text-Body der Mail zurück, und ist dieser nicht vorhanden, wird der HTML-Teil in vermutlich in Plaintext umgewandelt.
Ich selber formatiere HTML-Mails immer mit CSS-Anweisungen am Anfang(das unterstützen inzwischen die meisten Clients). Ich gebe dann z.B. dem Body eine fest eingestellte Textgröße, so das nicht formatierte Elemente mit Ihrer Schrift nicht aus dem Rahmen fallen. Das funktionierte bisher soweit einwandfrei (AppleMail ist hier eine Ausnahme, das tanzt immer mal wieder aus der Reihe, wie so oft).
Siehe auch folgenden Beitrag: Memofeld Schriften Formatieren (Einfluss auf den HTML Code nehmen) per VBA
Beispiel:
Eventuell hilft dir das weiter...
Grüße Uwe
wenn du eine universelle Mail gestalten willst solltest du zusätzlich den normalen "Body" auch mit Text(ohne Formatierung) füllen denn nicht jeder ließt seine Mails in HTML sondern hat z.B. seinen Mailclient so eingestellt das er nur "Text" anzeigt. Dann greift der Mailclient auf den Plain-Text-Body der Mail zurück, und ist dieser nicht vorhanden, wird der HTML-Teil in vermutlich in Plaintext umgewandelt.
Ich selber formatiere HTML-Mails immer mit CSS-Anweisungen am Anfang(das unterstützen inzwischen die meisten Clients). Ich gebe dann z.B. dem Body eine fest eingestellte Textgröße, so das nicht formatierte Elemente mit Ihrer Schrift nicht aus dem Rahmen fallen. Das funktionierte bisher soweit einwandfrei (AppleMail ist hier eine Ausnahme, das tanzt immer mal wieder aus der Reihe, wie so oft).
Siehe auch folgenden Beitrag: Memofeld Schriften Formatieren (Einfluss auf den HTML Code nehmen) per VBA
Beispiel:
.HTMLBody = "<style type=""text/css"">td,th,body {font-family:Arial, Helvetica, sans-serif; font-size:10pt;}</style><body><div>Hallo das ist ein Test</div></body>"
.TextBody = "Hallo das ist ein Test"
Eventuell hilft dir das weiter...
Grüße Uwe
Zitat von @thomas1972:
Wie bekomme ich es den hin, dass im Textfeld, welche ich per Variable einlese
keine Schriftarten/grössen mit übergeben werden,
wie sieht den der RAW-Output aus deinem Textfeld beispielsweise aus, ist dieser HTML oder RTF formatiert ?Wie bekomme ich es den hin, dass im Textfeld, welche ich per Variable einlese
keine Schriftarten/grössen mit übergeben werden,
Wenn du HTML-Tags aus dem Text ausfiltern willst kannst du dies z.B. so machen:
HTMLSTRING = "<body><div>Das ist ein Test</div></body>" & vbNewLine & "<table id=""test""><tr><td>Ich war in einer Tabelle</td></tr></table>"
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "<[^>]*>"
regex.Global = True
PLAINTEXT = regex.Replace(HTMLSTRING,"")
MsgBox PLAINTEXT
sorry, in Access ist das Wort
), du musst ein anderen Namen für die Variable nehmen:
PlainText
schon ein reserviertes Wort (blöder Zufall HTMLSTRING = Mailtext
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "<[^>]*>"
regex.global = True
strPlainText = regex.Replace(HTMLSTRING, "")
MsgBox strPlainText
Leere Zeilen zusätzlich weg...
aber dann gehen auch die leeren Zeilen weg die du wahrscheinlich erhalten willst
regex.Pattern = "<[^>]*>| \s*|^\s*$"
teste das mal an deinem String
HTMLSTRING = "<div><font face=""Arial"" size=""2"" color=""black"">Sehr geehrte Damen und Herren,</font></div>" & vbNewLine & vbNewLine & "<div><font face=""Arial"" size=""2"" color=""black""> </font></div>" & vbNewLine & vbNewLine & "<div><font face=""Arial"" size=""3"" color=""black"">Das ist ein Test</font></div>"
Set regex = CreateObject("vbscript.regexp")
regex.Pattern = "<[^>]*>| \s*|^\s*$"
regex.Global = True
regex.MultiLine = True
strPlainText = regex.Replace(HTMLSTRING,"")
MsgBox strPlainText