Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Formattierung des E-Mailtextes

Formattierung des E-Mailtextes
13.06.2023 16:39:40
Ronald

Hallo an alle!

Ich hab eine Frage zur Formattierung von Text innerhalb einer automatisch zu versendenden E-Mail.
Mein Quelltext sieht auszugsweise wie folgt aus:




    Dim applOutlook As Outlook.Application
    Dim nsOutlook As Outlook.Namespace
    Dim oAccount As Account
    Dim objMail As Object
    Dim strAbsender As String
    Dim strEmailAdresse As String
    Dim strTmp As String
    Dim strEmailName As String
    Dim strEmailAdresse2 As String

    Dim objClip As DataObject

    strAbsender = "Test@test.de"
    Set applOutlook = New Outlook.Application
    Set nsOutlook = applOutlook.GetNamespace("MAPI")
    Set objMail = applOutlook.CreateItem(0)
    Set objClip = New DataObject

        'Routine fürs E-Mail schicken
            For Each oAccount In applOutlook.Session.Accounts
                If oAccount = strEmailAdresse Then 'oAccount.DisplayName
    
                    'oAccount.SmtpAddress = strAbsender
                   
                    With objMail
                       '.SendUsingAccount = "Test@test.de"
                        .To = frmService.txtEmail36.Text 'hier vorher abfragen, ob E-Mail-Adresse hinterlegt
                        .Subject = strServiceID
                        .Body = strEMailVorschau
                        If strEMailVorschauAttachm = "" Then
                        Else
                        .Attachments.Add strEMailVorschauAttachm
                        End If
                        .BCC = strBCC
                        .SentOnBehalfOfName = "Test@test.de"
                        'Set .SendUsingAccount = oAccount
                        .Send        ' .Display = Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
                    End With
                    
                End If
            Next


Dieser Quelltext funktioniert. Das Einzige, was ich gerne wissen möchte: Wie kann ich hier formattierten Text innerhalb der
E-Mail verwenden. Wie zum Beispiel:

Name: - gewisse Anzahl Tabs als Abstand - Max Mustermann
Wohnort: - gewisse Anzahl Tabs als Abstand - Musterhausen

Und auch wäre es interessant, wie ich das mit diesen Tabs als Abstand am besten realisieren kann.

Vielen Dank im Voraus.
Gruß Ronald

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formattierung des E-Mailtextes
13.06.2023 18:24:15
volti
Hallo Ronald,

eine eMail lässt sich am einfachsten mit einer HTML-eMail formatieren.

.HTMLBody = strEMailVorschau
Über die diverse Tags lassen sich Schriftart, -größe und -farbe sowie Eigenschaften wie fett, kursiv und unterstrichen ganz einfach realisieren.
Letztendlich bei entsprechendem Mehraufwand auch alle denkbaren andere Formatierungen, z.B. auch für Hintergründe....

Dieses ist z.B fett <b>fett</b> oder <u>unterstrichen</u>.

Für das normale eMailformat denke ich, dass hier vbTab (Chr(9)) als Tabulator funktionieren müsste.

Zum Ausrichten von Text in einer HTML-Mail bietet sich z.B. die Verwendung einer Tabelle (ohne border) an.

Natürlich kann man seinen Text auch in Excel formatieren und dies dann mit diversen Methoden in die eMail übernehmen...

Gruß KH


Anzeige
AW: Formattierung des E-Mailtextes
20.06.2023 18:25:55
Ronald
Hallo KH

Ich habs mal probiert:


        strVorname = "" & strKontaktPersonVorname & ""
        strNachname = "" & strKontaktPersonName & ""
        strOrt = "" & strCustomerAdressZeile & ""
        strBestNr = "" & strKundenBestellnummer & ""
        
        strEMailBody = "Good day " & strVorname & " " & strNachname & " from " & strOrt & "," & vbCrLf & vbCrLf & _
                       "I would like to inform you about your open purchase order:" & vbCrLf & vbCrLf & _
                       "Your purchase order numer: " & strBestNr


        strAbsender = "test@test.de"
        Set applOutlook = New Outlook.Application
        Set nsOutlook = applOutlook.GetNamespace("MAPI")
        Set objMail = applOutlook.CreateItem(0)
        Set objClip = New DataObject
                 
            'Routine fürs E-Mail schicken
                For Each oAccount In applOutlook.Session.Accounts
                    If oAccount = strAbsender Then 'oAccount.DisplayName
        
                        'oAccount.SmtpAddress = strAbsender
                       
                        With objMail
                           '.SendUsingAccount = "test2@test.de"
                            .To = strKontaktPersonEmail 'hier vorher abfragen, ob E-Mail-Adresse hinterlegt
                            .Subject = "Test"
                            .HTMLBody = strEMailBody

                            '.BCC = strBCC
                            .SentOnBehalfOfName = "test@test.de"
                            'Set .SendUsingAccount = oAccount
                            .Send        ' .Display = Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
                        End With
                        
                    End If
                Next
    
        'objClip.SetText strTmp
        'objClip.PutInClipboard
       
        Set objClip = Nothing
        Set objMail = Nothing
        Set oAccount = Nothing
        Set applOutlook = Nothing

    Next

End Sub

Die originalen Variablen, wie strKontaktPersonVorname, werden vorgängig aus einer Tabelle ausgelesen. Das funktioniert. E-Mail senden funktioniert auch.
Die gewünschten Wörter werden auch fett geschrieben. Funktioniert also auch. Aber aus irgendeinem Grund werden die Zeilenumbrüche nun ignoriert.
Wird dies gemacht, weil es nun HTML ist? Wenn ja, wie werden in HTML Zeilenumbrüche realisiert?

Und wie muß man zum Schluß die E-Mail-Objekte vernichten? Mit = Nothing... ist das richtig, wie ich es gemacht habe?

Danke im Voraus.
Gruß Ronald


Anzeige
AW: Formattierung des E-Mailtextes
20.06.2023 20:13:45
volti
Hallo Ronald,

in HTML bleiben die Zeichen vbLF, vbCR, vbCRLF und weitere unberücksichigt, weil sie nicht zur HTML-Formatierung gehören.

Einen Zeilenumbruch erreichst Du mit dem Break-tag <br>.

strEMailBody = "Good day " & strVorname & " " & strNachname & " from " & strOrt & ".<br><br>" _
      & "I would like to inform you about your open purchase order:<br><br>" _
      & "Your purchase order numer: " & strBestNr

Eine Formatierung Deines Textes fett usw. kann ich wegen der hier fehlerhaft dargestellten tags nicht erkennen, aber wenn es passt, ist es ja gut.

Tabs werden in HTML auch nicht verarbeitet. Hier muss eine <table> her, falls da noch Bedarf bestehen sollte.

Zu den Objekten: Erstellte Objekte sollten so, wie Du es richtig gemacht hast, aus dem Arbeitsspeicher gelöscht werden. Das ist ok.
Es gab schon Diskussionen, ob das nicht durch die Beendigung der Sub erledigt würde, aber ich denke, so ist es besserer Programmierstil.

Ich persönlich kreiere diese Objekte meist gar nicht in dieser Form, sondern packe alles möglichst in WITH-Klauseln....

Wofür brauchst Du nsOutlook und objClip. Wird ja gar nicht verwendet.
Kannst Du Dir m.E. sparen, oder willst Du was in die Zwischenablage kopieren?

Gruß Karl-Heinz


Anzeige
AW: Formattierung des E-Mailtextes
13.06.2023 18:51:24
Ulf
Hi Ronald
Hier ein Beispiel mt direkter Änderung
Im Deklarationsteil
Private Const olFormatHTML= 2 
'In der Sub/Function
&lt;br&gt; 'strEMailVorschau = "&lt;html&gt;&lt;body&gt;&lt;font face='Arial Black' size='14pt'&gt;Max&nbsp;&nbsp;Mustermann&lt;/font&gt;&lt;/body&gt;&lt;/html&gt;"&lt;br&gt; du kannst mit &lt;style=&gt;&lt;/style&gt; css arbeiten, oder Tabellen nutzen&lt;br&gt;
'so sieht es dann aus
'strEMailVorschau="Max  Mustermann"

bei Erstellung

  .BodyFormat = olFormatHTML
  '.Body = strEMailVorschau
  .HTMLBody = strEMailVorschau
hth
Gruß
Ulf


Anzeige
AW: Formattierung des E-Mailtextes
13.06.2023 18:59:41
volti
Hallo Ulf,

in Ergänzung:
<style=></style> gibt es nicht bzw. wäre mir neu und entspricht nicht der HTML-Syntax.

Style kannst Du innerhalb einiger anderer tags wie span, div oder body u.a. benutzen.

<span style='font-size:10pt;'>MeinText</span>

Gruß KH


AW: Formattierung des E-Mailtextes
13.06.2023 19:11:06
Ulf
Hi KH
warum müsst ihr immer schlaumeiern
Inline CSS: https://bit.ly/43U1wbp
hab asp und asp.net, sharepoint, macromedia , director, frontpage usw durch
belehrt nicht immer
bringt ausser euren egos nix
grüsse


Anzeige
AW: Formattierung des E-Mailtextes
14.06.2023 14:41:35
Ronald
Grüß Dich Ulf

Danke schön! Das werde ich mal ausprobieren.
Und wie könnte ich einen gewissen Abstand realisieren? Wenn ich beispielsweise Name: schreibe und danach soll der Name kommen?
Ich will da aber 20 Leerzeichen zwischen Name: und dem Namen haben. Da aber beispielsweise die Buchstaben nicht alle gleich breit
sind, sähe die Tabelle nicht gut aus. Entsprechend müßte ich mit TabStops arbeiten. Oder keine Ahnung, welche Möglichkeiten sich hier ergeben.
Wäre froh, um ein paar Tips.

Danke im Voraus.
Gruß Ronald


Anzeige
AW: Formattierung des E-Mailtextes
14.06.2023 15:05:18
Ulf
Hi Ronald
am sichersten sind Tabellen mit vorgegebener Spaltenbreite, Bsp findet man im Netz bspw selfhtml oder w3schools
hth
Ulf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige