Python win32com.client发送嵌入在电子邮件中的图像

时间:2016-12-27 21:50:13

标签: python email

我希望发送嵌入HTML的图像以发送到发件人列表。

我需要使用win32com.client,SMTP被阻止。图像保存为png,最初是matplotlib条形图。

脚本成功发送收件人无法看到电子邮件中嵌入的图像的电子邮件。但是,当我向自己发送电子邮件时,我可以看到图像。

我尝试将附加图片添加到电子邮件中,但仍然没有运气。

email = """<body>
<p><img src="C:\output.png"></p>
</body>
"""

import win32com.client
olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = "the subject"
newMail.HTMLBody = email
newMail.To = "my_email@co.com;outside_email@co.com"
attachment1 = "C:\output.png"
newMail.Attachments.Add(attachment1)
newMail.Send()

任何帮助都非常感谢!

3 个答案:

答案 0 :(得分:0)

分发列表和我有一个共享驱动器。我将文件保存在共享驱动器中,现在邮件的接收者可以看到电子邮件中的图像。

答案 1 :(得分:0)

我有类似的问题,通过身体发送图像。下面我附上了修复它的代码。

<强>代码:

(s.StaffID in (Select sch.StaffID From Schedule sch
                where sch.AccountID=@AccountID
                  and sch.Date Between DATEADD(day, -90, @Today) and @Today
                  and sch.Status<>2))
AND
(s.StaffID Not in (Select sch.StaffID From Schedule sch
                    where sch.AccountID=@AccountID
                      and sch.Date Between DATEADD(day, -90, @Today) and @Today
                      and sch.Status=2))

答案 2 :(得分:0)

为了在邮件正文中显示图像,请使用以下代码:

mail.Attachments.Add(file_location + 'test.png')
mail.HTMLBody = "<html><body>  <img src='cid:test.png'>  </body></html>";

基本上,如果要在邮件正文中显示附件图像,则必须使用img src = 'cid:name'进行引用,否则它将不会显示。