python-将png图片插入电子邮件

python-将png图片插入电子邮件,python,Python,我正试图发送一封带有png格式图片的电子邮件,但不知何故,我在下面尝试的方法不起作用(电子邮件是空白的)。你知道我怎么做吗 稍后我将使用一个指向png图片的变量来定义显示的图片是X还是Y。现在我只是尝试显示任何图片,但我不能 我的代码是(试图将“imaged”放入正文): 从PIL导入图像 imaged=Image.open('down.png') imageu=Image.open('up.png') imageno=Image.open('nochanges.png') 值=0 如果值>0:

我正试图发送一封带有png格式图片的电子邮件,但不知何故,我在下面尝试的方法不起作用(电子邮件是空白的)。你知道我怎么做吗

稍后我将使用一个指向png图片的变量来定义显示的图片是X还是Y。现在我只是尝试显示任何图片,但我不能

我的代码是(试图将“imaged”放入正文):

从PIL导入图像
imaged=Image.open('down.png')
imageu=Image.open('up.png')
imageno=Image.open('nochanges.png')
值=0
如果值>0:
activegraph=imageu
elif值<0:
activegraph=已成像
elif值==0:
activegraph=imageno
subjecttext=“erewwerew”
bodytext=“”
%
“”%imaged
导入win32com.client
olMailItem=0x0
obj=win32com.client.Dispatch(“Outlook.Application”)
newMail=obj.CreateItem(olMailItem)
newMail.Subject=subjecttext
newMail.HTMLBody=bodytext
newMail.To=”test@test.com"
附件1='C:\\down.png'
附件2='C:\\up.png'
附件3='C:\\nochanges.png'
newMail.Attachments.Add(附件1)
newMail.Attachments.Add(附件2)
newMail.Attachments.Add(附件3)
newMail.Send()

您不能像这样在电子邮件正文中插入二进制PNG。我没有使用
win32com.client
的经验,但您希望将其设置为附件。实际上,我不希望将其设置为附件,我希望它与html正文文本一起显示。将url插入服务器上托管的图像,并将其嵌入到服务器的html中email@Gonzalo您始终需要将其设置为附件,然后在正文中用
cid:
引用它。通常MIME库提供了一个简单的函数。您可以将其与base64 CSS数据URL一起包含,但我不确定电子邮件客户端支持什么。@benbo大多数电子邮件客户端出于隐私原因阻止外部图像。
    from PIL import Image

    imaged = Image.open('down.png')
    imageu = Image.open('up.png')
    imageno = Image.open('nochanges.png')

    value = 0

    if value > 0 :
        activegraph = imageu
    elif value < 0:
         activegraph = imaged
    elif value == 0:
         activegraph = imageno


    subjecttext = "erewwerew"
    bodytext = """
            %s              
    """ % imaged


    import win32com.client
olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = subjecttext
newMail.HTMLBody = bodytext
newMail.To = "test@test.com"
attachment1 = 'C:\\down.png'
attachment2 = 'C:\\up.png'
attachment3 = 'C:\\nochanges.png'
newMail.Attachments.Add(attachment1)
newMail.Attachments.Add(attachment2)
newMail.Attachments.Add(attachment3)
newMail.Send()