Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Access Mail per cdo als .htmlbody kommt teilweise bei Empfänger falsch an (HTML quelltexte)

Frage Microsoft Microsoft Office

Mitglied: thomas1972

thomas1972 (Level 1) - Jetzt verbinden

20.11.2013, aktualisiert 10:16 Uhr, 2188 Aufrufe, 18 Kommentare, 1 Danke

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
01.
    With objMessage 
02.
     .Subject = EMailbetreff 
03.
     .Sender = Sender   ' Absender 
04.
     .From = SenderName ' Absendername 
05.
     .To = rs.Fields("E-Mail") 
06.
     .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">&nbsp;</font></div>

<div><font face="Arial" size="2" color="black">bla bla bla </font></div>

<div><font face="Arial" size="3" color="black">&nbsp;</font></div>

<div><font face="Arial" size="2" color="black"><strong>xxxxxxxxx</strong></font></div>

<div><font face="Arial" size="3" color="black">&nbsp;</font></div>


Im CDO habe ich nun einen Header voran gestellt

01.
    With objMessage 
02.
     .Subject = EMailbetreff 
03.
     .Sender = Sender   ' Absender 
04.
     .From = SenderName ' Absendername 
05.
     .To = rs.Fields("E-Mail") 
06.
      
07.
      strHTML = "<html>" 
08.
      strHTML = strHTML & "<head>" 
09.
      strHTML = strHTML & "<meta http-equiv=" & """Content-Type""" & " content=" & """text/html; charset=utf-8""" & ">" & "</head>" 
10.
      strHTML = strHTML & Mailtext 
11.
       
12.
      
13.
      .HTMLBody = strHTML 
14.
 
15.
...

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.
Mitglied: colinardo
20.11.2013, aktualisiert um 10:34 Uhr
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: http://www.administrator.de/forum/memofeld-schriften-formatieren-einflu ...
Beispiel:
01.
.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>" 
02.
.TextBody = "Hallo das ist ein Test"
Eventuell hilft dir das weiter...
Grüße Uwe
Bitte warten ..
Mitglied: thomas1972
20.11.2013, aktualisiert um 10:44 Uhr
Hallo Uwe,

danke für die Rückmeldung.
Wie bekomme ich es den hin, dass im Textfeld, welche ich per Variable einlese
keine Schriftarten/grössen mit übergeben werden,
so dass ich diese direkt mit deinem String verbinden kann?
Kann ich diese ver VBA heraus löschen?

Gruß
Thomas
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 10:47 Uhr
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 ?
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 10:57 Uhr
Wenn du HTML-Tags aus dem Text ausfiltern willst kannst du dies z.B. so machen:
01.
HTMLSTRING = "<body><div>Das ist ein Test</div></body>" & vbNewLine & "<table id=""test""><tr><td>Ich war in einer Tabelle</td></tr></table>" 
02.
Set regex = CreateObject("vbscript.regexp") 
03.
regex.Pattern = "<[^>]*>" 
04.
regex.Global = True 
05.
PLAINTEXT = regex.Replace(HTMLSTRING,"") 
06.
MsgBox PLAINTEXT
Bitte warten ..
Mitglied: thomas1972
20.11.2013 um 11:01 Uhr
Hallo Uwe,

Es ist ein Feld einer Tabelle welche auf einen MSSQL liegt. als NVARCHAR(255) formatiert.
Die Tabelle wird mit den vorlagen befüllt per Textfeld welche als Rich-Text formatiert ist

01.
<div><font face=Arial size=2 color=black>Sehr geehrte Damen und Herren,</font></div> 
02.
 
03.
<div><font face=Arial size=2 color=black>&nbsp;</font></div> 
04.
 
05.
<div><font face=Arial size=2 color=black>Es sind Meldungen vorhanden </font></div> 
06.
ect...
Vielleicht hast du noch einen Ansatz
Bitte warten ..
Mitglied: thomas1972
20.11.2013, aktualisiert um 11:10 Uhr
Hallo _Use,
habe ich versucht zu Filtern

01.
HTMLSTRING = Mailtext 'Variable 
02.
Set regex = CreateObject("vbscript.regexp") 
03.
regex.Pattern = "<[^>]*>" 
04.
regex.global = True 
05.
PlainText = regex.Replace(HTMLSTRING, "") 
06.
MsgBox PlainText
ergibt aber den Fehler

Microsoft Visual Basic for Applications
Fehler beim Kompilieren:

Funktionsaufruf auf der linken Seite der Zuweisung muß den Typ Variant oder Object zurückgeben

Gruß
Thomas
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 11:12 Uhr
Zitat von thomas1972:
sorry, in Access ist das Wort PlainText schon ein reserviertes Wort (blöder Zufall ), du musst ein anderen Namen für die Variable nehmen:
01.
HTMLSTRING = Mailtext 
02.
Set regex = CreateObject("vbscript.regexp") 
03.
regex.Pattern = "<[^>]*>" 
04.
regex.global = True 
05.
strPlainText = regex.Replace(HTMLSTRING, "") 
06.
MsgBox strPlainText
Bitte warten ..
Mitglied: thomas1972
20.11.2013, aktualisiert um 11:22 Uhr
Hallo Uwe,
vielen Dank, für die Rückmeldung.
Nun funktioniert die Konvertierung.
bis auf die Passage

01.
Sehr geehrte Damen und Herren, 
02.
 
03.
&nbsp; 
04.
 
05.
bald und Test, .......
Wie kann der "Umbruch" gefiltert werden.

Grüße aus München
Thomas
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 11:30 Uhr
Der obige Code filter nur HTML-Tags aus also die zwischen zwei "< >" stehen.
Zusätzliche Dinge kannst du mit aufnehmen wenn du den RegEx Pattern änderst:
regex.Pattern = "<[^>]*>|&nbsp;"
Bitte warten ..
Mitglied: thomas1972
20.11.2013, aktualisiert um 11:30 Uhr
Hallo Use,
der normale umbruch sollte erhalten bleiben

01.
Sehr geehrte Damen und Herren, 
02.
 
03.
04.
 
05.
Test bla 
06.
 
07.
eingeplant ..... 
08.
 
09.
10.
 
11.
Hierzu ....vorverlegt. 
12.
 
13.
Wollen wir testenn.  
14.
 
15.
;
sollte sein

01.
Sehr geehrte Damen und Herren, 
02.
 
03.
Test bla 
04.
eingeplant ..... 
05.
 
06.
 
07.
Hierzu ....vorverlegt. 
08.
Wollen wir testenn. 
danke für deine Hilfe
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 11:34 Uhr
regex.Pattern = "<[^>]*>|&nbsp;\s*"
Regular Expressions Tutorial: http://www.danielfett.de/internet-und-opensource,artikel,regulaere-ausd ...
Bitte warten ..
Mitglied: thomas1972
20.11.2013, aktualisiert um 11:35 Uhr
Hallo Uwe,

Hmm ergibt nun

01.
Sehr geehrte Damen und Herren, 
02.
 
03.
&nbsp; 
04.
 
05.
Test bla 
06.
 
07.
eingeplant ist... 
08.
 
09.
&nbsp; 
10.
 
11.
Hierzu .... vorverlegt. 
12.
 
13.
Wollen wir testenn. &nbsp; 
14.
 
15.
&nbsp; 
16.
 
Bitte warten ..
Mitglied: colinardo
20.11.2013 um 11:37 Uhr
hatte es kurz nochmal geändert, war ein kleiner Typo drin ...s.o.
Bitte warten ..
Mitglied: thomas1972
20.11.2013, aktualisiert um 11:41 Uhr
Hallo Use,

danke nochmal für deine schnelle Hilfe,

nun bleiben nur noch "doppelte" umbrüche drin, sonst ist es perfekt

01.
Sehr geehrte Damen und Herren, 
02.
 
03.
 
04.
 
05.
Test bla 
06.
 
07.
eingeplant ist... 
08.
 
09.
 
10.
 
11.
Hierzu  vorverlegt. 
12.
 
13.
Wollen wir testenn
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 11:50 Uhr
Zitat von thomas1972:
nun bleiben nur noch "doppelte" umbrüche drin, sonst ist es perfekt
Leere Zeilen zusätzlich weg...
regex.Pattern = "<[^>]*>|&nbsp;\s*|^\s*$"
aber dann gehen auch die leeren Zeilen weg die du wahrscheinlich erhalten willst
Bitte warten ..
Mitglied: thomas1972
20.11.2013, aktualisiert um 12:02 Uhr
Ich hoffe nun zum letzten mal,

aber leider keine Änderung.
Ergebnis wie im letzten Beitrag 11:40

Ich hab mir den Text nochmalig angesehen
Es stehen entweder 3 Umbrüche
oder 1 Umbruch.

Besteht nicht die Möglichkeit
Prüfe ob zwischen dem Text nur 1 Umbruch vorhanden dann entferne diesen
Prüfe ob 3 Umbrüche vorhanden dann entfernen zwei davon

Gruß
Thomas
Bitte warten ..
Mitglied: colinardo
20.11.2013, aktualisiert um 12:03 Uhr
teste das mal an deinem String
01.
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"">&nbsp;</font></div>" & vbNewLine & vbNewLine & "<div><font face=""Arial"" size=""3"" color=""black"">Das ist ein Test</font></div>" 
02.
Set regex = CreateObject("vbscript.regexp") 
03.
regex.Pattern = "<[^>]*>|&nbsp;\s*|^\s*$" 
04.
regex.Global = True 
05.
regex.MultiLine = True 
06.
strPlainText = regex.Replace(HTMLSTRING,"") 
07.
MsgBox strPlainText
Bitte warten ..
Mitglied: thomas1972
20.11.2013 um 12:12 Uhr
Hallo Uwe,

vielen lieben dank für deine Hlfe,
das hat mir sehr weitergeholfen und konnte mein Problem mit der Formatierung lösen.
Nun lasse ich den ersteller der Email entscheiden, ob er formatiert versenden möchte oder nicht.

Grüße aus München.
Thomas
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...