22.11.2022, 19:38
Liebe Leserin, lieber Leser,
man liest öfter den Wunsch, dass in einer Mail auch Bilder eingebettet werden können.
Dazu gibt es ja viele Beispiele in den Foren...
Zum Beispiel wird ein IMG-Tag (Image) mit einem Link zu einer frei verfügbaren Adresse im Netz verwendet,
oder eine Bilddatei angehängt und mit entsprechendem Code eine cid: mit Verknüpfung zu dieser Bilddatei erstellt.
Oder man fügt ein vorher (per VBA) kopiertes Bild über den Wordeditor einfach in den Body ein. Wobei man hier dann aber auch die genaue Stelle finden muss.
Dass es aber auch anders geht, will ich hier mal an einem Beispiel zeigen...
Im Grunde werden hier auch aufbereitete Bilddaten als Datei mitgeschickt, aber auch gleich ohne weiteren Code die Referenzen gesetzt.
Im Beispiel werden neben einer Kopfgrafik, zwei im Text vorhandene Bilder auch die Signatur mit einer Grafik versehen. Da das Bild neben der Signatur stehen soll brauchen wir dazu noch eine HTML-Tabelle.
Die Bilder können bzgl. der Abmessungen bequem angepasst werden.
Und nun viel Spaß und Erfolg damit.
man liest öfter den Wunsch, dass in einer Mail auch Bilder eingebettet werden können.
Dazu gibt es ja viele Beispiele in den Foren...
Zum Beispiel wird ein IMG-Tag (Image) mit einem Link zu einer frei verfügbaren Adresse im Netz verwendet,
oder eine Bilddatei angehängt und mit entsprechendem Code eine cid: mit Verknüpfung zu dieser Bilddatei erstellt.
Oder man fügt ein vorher (per VBA) kopiertes Bild über den Wordeditor einfach in den Body ein. Wobei man hier dann aber auch die genaue Stelle finden muss.
Dass es aber auch anders geht, will ich hier mal an einem Beispiel zeigen...
Im Grunde werden hier auch aufbereitete Bilddaten als Datei mitgeschickt, aber auch gleich ohne weiteren Code die Referenzen gesetzt.
Im Beispiel werden neben einer Kopfgrafik, zwei im Text vorhandene Bilder auch die Signatur mit einer Grafik versehen. Da das Bild neben der Signatur stehen soll brauchen wir dazu noch eine HTML-Tabelle.
Die Bilder können bzgl. der Abmessungen bequem angepasst werden.
Und nun viel Spaß und Erfolg damit.
Code:
Private Sub MailMitBildernSenden()
' Sub sendet eine Mail mit eingebetteten Bildern
With CreateObject("Outlook.Application").CreateItem(0)
.Getinspector.Display
.To = "volti@zuhause.de"
.Subject = "Test the best"
.htmlbody = SetzeBild("D:\Pictures\CleverExcel.png") & "<br><br>" _
& "Hallo,<br>hier ist eine Mail." & "<br><br>" _
& SetzeBild("D:\Pictures\Info.gif", 12, 12) & " Meine erste Info<br>" _
& SetzeBild("D:\Pictures\Info.gif", 12, 12) & " Meine zweite Info<br>" _
& "<table border=0><tr><td>" & SetzeBild("D:\Pictures\Rico.bmp", 120, 80) _
& "</td><td valign='middle'>" & .htmlbody & "</td></tr></table>"
End With
End Sub
Function SetzeBild(sDatei As String, Optional iHoch As Integer, Optional iBreit As Integer) As String
' Funktion erstellt Daten für ein Bild zur Einbettung in Html
Dim vData As Variant
With CreateObject("ADODB.Stream")
.Type = 1 ' adTypeBinary ' Binärdatei wird codiert
.Open ' Stream öffnen
.LoadFromFile (sDatei): vData = .Read() ' Binärdaten in Variable einlesen
.Close ' Stream schließen
End With
With CreateObject("MSXml2.DOMDocument").CreateElement("Base64Data")
.DataType = "bin.base64"
.nodeTypedValue = vData ' Binärdaten holen
SetzeBild = "<img" _
& IIf(iHoch > 0, " height=" & iHoch, "") _
& IIf(iBreit > 0, " width=" & iBreit, "") _
& " src='data:image/" & Mid$(sDatei, InStrRev(sDatei, ".") + 1) _
& ";base64," & .Text & "'>" ' Base64-String holen und Image setzen
End With
End Function
' Sub sendet eine Mail mit eingebetteten Bildern
With CreateObject("Outlook.Application").CreateItem(0)
.Getinspector.Display
.To = "volti@zuhause.de"
.Subject = "Test the best"
.htmlbody = SetzeBild("D:\Pictures\CleverExcel.png") & "<br><br>" _
& "Hallo,<br>hier ist eine Mail." & "<br><br>" _
& SetzeBild("D:\Pictures\Info.gif", 12, 12) & " Meine erste Info<br>" _
& SetzeBild("D:\Pictures\Info.gif", 12, 12) & " Meine zweite Info<br>" _
& "<table border=0><tr><td>" & SetzeBild("D:\Pictures\Rico.bmp", 120, 80) _
& "</td><td valign='middle'>" & .htmlbody & "</td></tr></table>"
End With
End Sub
Function SetzeBild(sDatei As String, Optional iHoch As Integer, Optional iBreit As Integer) As String
' Funktion erstellt Daten für ein Bild zur Einbettung in Html
Dim vData As Variant
With CreateObject("ADODB.Stream")
.Type = 1 ' adTypeBinary ' Binärdatei wird codiert
.Open ' Stream öffnen
.LoadFromFile (sDatei): vData = .Read() ' Binärdaten in Variable einlesen
.Close ' Stream schließen
End With
With CreateObject("MSXml2.DOMDocument").CreateElement("Base64Data")
.DataType = "bin.base64"
.nodeTypedValue = vData ' Binärdaten holen
SetzeBild = "<img" _
& IIf(iHoch > 0, " height=" & iHoch, "") _
& IIf(iBreit > 0, " width=" & iBreit, "") _
& " src='data:image/" & Mid$(sDatei, InStrRev(sDatei, ".") + 1) _
& ";base64," & .Text & "'>" ' Base64-String holen und Image setzen
End With
End Function
_________
viele Grüße
Karl-Heinz
viele Grüße
Karl-Heinz