Outlook HTML Mail mit eingebetteten Bildern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
H4lunkE
User
Beiträge: 2
Registriert: Freitag 22. Mai 2015, 10:10

Hallo,

ich bin auf der Suche nach einer Lösung für die folgende Aufgabenstellung:

Das Python script soll in Outlook 2010 eine neue HTML Email öffnen und mit Inhalt füllen. Unter anderem sollen dabei Bilder eingebettet werden.
Das script soll die Email nicht verschicken, sondern nur öffnen, damit man vorher noch kontrollieren kann was verschickt wird und dann manuell versenden kann.


Folgenden Code habe ich schon:

Code: Alles auswählen

import win32com.client as win32

outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = 'to address'
mail.Subject = 'Message subject'
mail.htmlbody = '<b>Some <i>HTML</i> text</b>'
mail.Attachments.Add('D:\\test.jpg')
mail.Display(True)
Das funktioniert soweit sehr gut und wie gewollt, allerdings muss ich es jetzt nur noch hinbekommen das das angehängte Bild auch im Text eingebettet wird.
Mit googeln bin ich leider am Ende und habe leider keine richtige Idee wie ich das mit Python lösen kann.
Vielleicht hat ja einer von euch da schon Erfahrungen.

Grüße,
H4lunke
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Wenn Du Bilder in eine HTML-Mail einbinden willst, solltest Du die Bilder in Base64 enkodieren und die data-URI in das src-Attribut eines img-Elements packen. Diese Seite z. B. generiert den passenden HTML-Code.

Die Lösung hat also nichts mit Python zu tun. :|
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@nomnom: das ist ein ziemlich umständlicher Weg. Aber Du hast recht, das hat nichts mit Python zu tun, zumal hier die COM-Schnittstelle zu Outlook benutzt wird.

Mails mit Bildern werden als multipart verschickt. Auf die einzelnen Teile kann man per cid:-Url zugreifen.
Wenn der Tag des Bildes z.B "test.jpg" ist, wird es einfach referenziert

Code: Alles auswählen

<h1>Mail mit Bild</h1>
<img src="cid:test.jpg">
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Sirius3 hat geschrieben:@nomnom: das ist ein ziemlich umständlicher Weg.
Ich weiß nicht, was für eine „cid-URI“ Outlook der angehängten Datei zuweist. Von daher ist IMHO das ein bisschen sicherer, und in der rohen E-Mail ist es auch nicht umständlicher als ein normaler Anhang, der ja auch Base64-kodiert wird.
Antworten