htmlsmtpemai中的Python嵌入图像

2024-04-25 10:12:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python的smtplib生成电子邮件,并尝试重新创建一个签名,放在每个电子邮件的底部。以下是对该签名的高度详细和巧妙的再现:

signature

文本部分我已经弄清楚了。在

body = """\
    <html>
        <head></head>
        <body>
            stuff
        </body>
    </html>
    """

我把它附在留言上:

message_body = MIMEText(body, 'html')

message.attach(message_body)

我似乎搞不懂的是如何嵌入图像,使它们的格式如上图所示。图片中的线条只是为了表示对齐,但签名本身并不存在这些线条。图像还包含超链接。在

我尝试过在<body>标记的末尾添加以下内容,以至少在底部重新创建较小的图像:

{cd5}

<img src="C:\Users\Me\Desktop\image2.png">

我没有收到任何错误,但也没有什么显示,当电子邮件发送。我不知道如何开始格式化签名中文本左侧的较大图像。在

我可以使用MIMEImage将这些图像作为附件成功地包含在电子邮件中,但我不希望它们作为附件,所以这不起作用。在

在图像如上所述嵌入之后,我想我可以做些类似的事情来添加超链接:

^{pr2}$

我刚接触HTML,所以对我来说这是一片未知的水域,我不知道该怎么做。我在这里读过很多关于base64编码的问题,但是我不知道它是否适用于这种情况。在

任何帮助都将不胜感激。谢谢!在

编辑:发布了一个新问题here,以解决这个问题,即一旦编码并发送,发送的电子邮件中的图像将显示为空白。在


Tags: 图像文本message编码附件高度电子邮件html
1条回答
网友
1楼 · 发布于 2024-04-25 10:12:17

如果你想在你的html中使用嵌入的图像,你需要在它之前对它们进行base64编码。在

一个html图像标记看起来像这样

<img src="data:image/jpg;base64,THEBASE64CODE" alt="image"high="30" width="30" />

在那里,你必须读取图像文件,并用pythons base64对其进行编码。在

否则,您需要引用包含图像的web资源。在

^{pr2}$

第一个解决方案需要在每封电子邮件中发送图像。这会增加电子邮件的大小。在

第二种解决方案需要有一个公共的web资源,接收系统将在打开电子邮件后加载图像(如果他/她的电子邮件程序没有阻止它)。在

在你的情况下,我会尝试用你喜欢的编辑器和webbrowser以纯html格式设计电子邮件。此后,我将尝试使用给定的解决方案之一修改img标记。在

yout电子邮件设计的一些附加信息:

Html表对于构造数据表示非常有用

<table border="1" >

<tr>
    <td>IMG left</td>
    <td colspan="2">

        your text that could be very long and usefull to your recipient<br><br>
        you should encode the mail text for html within your python application<br><br>

        otherwise you will have problems with newline and so on.
    </td>
<tr>
    <td></td>
    <td>IMG center</td>
    <td>IMG rigth</td>
</tr>
</table>

将IMG替换为IMG标签。将邮件文本放入文本部分。Remove the border=“1”删除html表的边框。在

对于HTML编码,请看pythons HTMLParser

相关问题 更多 >