我正在使用python POP3库连接到邮件服务器的应用程序解析电子邮件并将它们放入数据库。
我已成功解析文本电子邮件,HTML电子邮件和附件。现在,我坚持使用电子邮件包含嵌入图像的电子邮件。服务器是如何进行CID的:src标签中图像的一些代码,图像是字节。我不知道如何获取图像并使用CID映射它们。
请建议。
提前致谢。
下面是我收到的电子邮件内容:
Content-Type: multipart/alternative;
boundary="PHP-alt-e0af773d09fadf5208f69aecffcb4de888824263"
--PHP-alt-e0af773d09fadf5208f69aecffcb4de888824263
Content-Type: text/plain
Hi, testing embedded images email!
--PHP-alt-e0af773d09fadf5208f69aecffcb4de888824263
Content-Type: multipart/related; boundary="PHP-related-e0af773d09fadf5208f69aecffcb4de888824263"
--PHP-alt-e0af773d09fadf5208f69aecffcb4de888824263
Content-Type: text/html
<html>
<head>
<title>Test HTML Mail</title>
</head>
<body>
<font color='red'>Hai, it is me!</font>
Here is my picture:
<img src="cid:PHP-CID-e0af773d09fadf5208f69aecffcb4de888824263" />
</body>
</html>
--PHP-related-e0af773d09fadf5208f69aecffcb4de888824263
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-ID: <PHP-CID-e0af773d09fadf5208f69aecffcb4de888824263>
iVBORw0KGgoAAAANSUhEUgAAAEYAAAAgCAMAAACYXf7xAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAAwBQTFRF////oNKWY6ZZTnc08/304+P/6/PsRHgpZYpWGHcTWqFWe7pz
WZNFwNa+Q2UqgpZ5JGcZ4ezj7e3/6Oj/tbW62tr/aadiK1sSUHQ6oKeSI0UM5PHkAAAAaZhifHx6
yMjKWHdJY5lbi6yFW5RU0+LSnq2VmZ6Mm8iS8vL/dXVzRERFJVUJrNalcrNtkZGRLnYslsWJ3e3d
7fXwstirWYJB3ergyeTI9vb/iIiIgoKBd6V0np6ce51rU2pDqMqlVVVWTnpFhcN7NTU2RYUqpbWd
rKysOHcn5vbql6eOMWYbMkUi+fn/uOStk6yLZGRm7f7tlLGKOXg20dvNIiIiGUUER4Q0InMcaYtf
3+/e3d3czd7KjY2Nnb6WtdOzKWkmhoaGUJNNjL+FhLt7jLp9IF0Z/v7/0tLRqrijVX9UTmZA+v38
Qko5SW5EVYA9JkwPMzwocnJub7RnfZpy3vPcaGhkhYWDbm5rhISIRoZGN0gxm6aQ/Pz/OYAyXm1V
pKSpeHh2Q1M5oqKgiaZ+dZ1vbqRaTVU4k7GFe6xqpr6c1+rb3uTcfcdx0d3Qk7ePhaJ6cqVsTp5H
xNzA1ezTVotS7e7uv968+v76xtPBPlczm7OVydfDdK1t+fn7+vT91NTddpRpVmNBlLyUgKRymZmW
u9a5dati9vr35eXugrFzTVY2/v//R5M5ial+zdbJcJJn8/jz+f73SV89EREReL1vob2TUVw7orGX
YmtU///+YYZNkaKGmdKUR106iIiD9/b5VWxNmbWOudy0j4+N+//9/v/8Dw8Pd5xnf3+INF8Yjp2D
frZ2cHB30ufZb3Bt2+HY3e3WqKqiLjcrUW09q8+xLmowOXAhmbiI4+Xnjr6P5O/n5/DkeK9mQEBE
8vf5//r/9fT4U5Q9hcqGlNKNDh0FlJSXA0UAC1cJGl0KWaZQwc69yN3K/f76drVuQn0iLTkZeJds
lq+Pv9HBN1YtV21Fkb6Bkb6KmLSHtNC5t9y5DikEhLZ/W3BLMEoddqVi4vfk////U8M4kgAAAQB0
答案 0 :(得分:2)
我假设您使用的是Python email包?它应该处理图像就好了。如果您需要自己解码图像,则需要查看编码,在本例中为base64。 stdlib中也有一个module for encoding and decoding base64。
对于映射,只需从图像中获取Content-Id标头,创建一个将内容ID映射到mime部分的字典。要解析src中的URL,请检查它们是否以'cid:'开头(即解析为内部mime文档),去掉前缀并在之前创建的字典中查找它们。
答案 1 :(得分:0)
我复制/粘贴此电子邮件内容。即使我的formail客户端也无法正确解码此邮件。 所以这封邮件可能不正确或完整。
答案 2 :(得分:0)
通过检查内容中的Content-Disposition
值和cid来解决此问题。
如果附件中的文件内容应显示为带有电子邮件的附件,如果其内联,则内容将显示在正文中。
答案 3 :(得分:0)
这可以使用附件负载标头和 img
标签轻松完成。
这是一个例子。
如果是内嵌附件(或嵌入图像),标题将是:
'Content-Disposition', 'inline; filename="1.png"'
'Content-ID', '178eefca98b2c91aec1'
img
标签将类似于:
<img height="59" src="cid:178eefca98b2c91aec1" width="169"/>
如果是实际附件,标题将类似于:
'Content-ID', '178eefca98bee445dfe2'
'Content-Disposition', 'attachment; filename="Ajay_pratap_devops.pdf"'