2017-06-14 2 views
0
Right now I am using below code: 

import win32com.client as win32 
outlook = win32.Dispatch('outlook.application') 
mail = outlook.CreateItem(0) 
mail.To = 'to address' 
mail.Subject = 'Message subject' 
mail.Body = 'Message body' 
mail.HTMLBody = '<h2>HTML Message body</h2>'# this field is optional 
**mail.Attachments.Add('C:\Users\MA299445\Downloads\screenshot.png')** 
mail.Send() 

Je peux joindre une image, mais je veux pour coller cette image dans le corps de l'e-mail.Je ne suis pas en mesure d'ajouter une image dans le corps de l'e-mail en utilisant python, je suis en mesure d'ajouter une image en pièce jointe mais je veux un code pour ajouter une image dans mailbody

Merci à l'avance

Répondre

0

Créer une pièce jointe et définissez la propriété PR_ATTACH_CONTENT_ID (nom DASL "http://schemas.microsoft.com/mapi/proptag/0x3712001F «) en utilisant Attachment.PropertyAccessor

Votre corps HTML (MailItem.HTMLBody de propriété) alors besoin. faire référence à cette fixation de l'image à travers le cid:

img src="cid:xyz" 

où xyz est la valeur de la propriété PR_ATTACH_CONTENT_ID.

Regardez un message existant avec OutlookSpy (cliquez sur le bouton iMessage).

attachment = mail.Attachments.Add("C:\Users\MA299445\Downloads\screenshot.png") 
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "MyId1") 
mail.HTMLBody = "<html><body>Test image <img src=""cid:MyId1""></body></html>" 
+0

Il est erreur lancer « MailItem » est pas défini –

+0

Oui, il doit être « mail ». –

+0

Il fonctionne maintenant bien. Merci @Dmitry –

0

Vous pouvez utiliser <img> balise HTML:

encoded_image = base64.b64encode(image_file.getvalue()).decode("utf-8") 
html = '<img src="data:image/png;base64,%s"/>' % encoded_image 

Et vous pouvez mettre l'étiquette à l'intérieur de votre contenu HTML.

Ne pas oublier d'importer des modules requis:

import base64 
+0

src = "données: image" ne fonctionne pas dans Outlook. –