我正在使用Python smtplib
生成电子邮件,我正在尝试重新创建一个签名,放在每封电子邮件的底部。以下是对此签名的高度详细和精湛的再现:
我已经弄明白了。
body = """\
<html>
<head></head>
<body>
stuff
</body>
</html>
"""
然后我附上消息:
message_body = MIMEText(body, 'html')
message.attach(message_body)
我似乎无法弄清楚如何嵌入图像,使它们的格式如上图所示。图片中的线条只是为了显示对齐方式,但签名本身并不存在。图像还包含超链接。
我尝试过将其添加到<body>
标记的最后,以至少重新创建底部的较小图片:
<img src="C:\Users\Me\Desktop\image1.png">
<img src="C:\Users\Me\Desktop\image2.png">
我没有收到任何错误,但发送电子邮件时也没有显示任何错误。我不知道如何开始格式化应该位于签名文本左侧的较大图像。
我可以使用MIMEImage
成功地将这些图片作为附件包含在电子邮件中,但我不希望它们作为附件,因此无效。
如上所述嵌入图像后,我假设我可以像这样添加超链接:
<a href="https://www.example.com">
<img src="img1.png" alt="example.com">
</a>
我是HTML的新手,所以这些对我来说都是未知的水域,我不知道该怎么办。我在这里阅读了很多问题,也提到了base64编码,但我不知道它是否适用于这种情况。
任何帮助将不胜感激。谢谢!
修改:发布新问题here,解决了编码和发送后,已发送电子邮件中的图片显示为空白的问题。
答案 0 :(得分:1)
如果你想在你的html中使用嵌入式图像,你需要先对它们进行base64编码。
html图片标记看起来像这样
<img src="data:image/jpg;base64,THEBASE64CODE" alt="image"high="30" width="30" />
你必须阅读图像文件并使用pythons base64对其进行base64编码。
否则,您需要在网页中引用包含图片的资源。
<img src="http://yourwebserver.org/image.jpg" alt="image" high="30" width="30" />
第一个解决方案需要在每封电子邮件中发送您的图片。这会增加电子邮件的大小。
第二个解决方案需要有一个公共网络资源,接收系统会在打开电子邮件后加载图像(如果他/她的电子邮件程序没有阻止它)。
在您的情况下,我会尝试使用您首选的编辑器和webbrowser以简单的html设计电子邮件。此后,我将尝试使用给定的解决方案之一修改img-Tags。
为电子邮件设计提供了一些额外的信息:
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-Tag替换IMG。将您的邮件文本放入文本部分。删除边框=&#34; 1&#34;删除html表的边框。
对于HTML编码,请查看pythons HTMLParser