2010-12-02 5 views
2

Я работаю над приложением, которое подключается к почтовому серверу с использованием библиотеки POP3 python, анализирует электронные письма и помещает их в базу данных.Python: разоблачение писем со встроенными изображениями

Я успешно проанализировал текстовые сообщения электронной почты, 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

Исправлена ​​ошибка, проверяя значение Content-Disposition и значение cid в содержимом.

Если его вложение, содержимое файла должно быть указано в виде вложений с электронным письмом, и если его встроенное содержимое будет отображаться в теле.

0

копировать/вставить это содержание электронной почты. Даже мой клиент формы не может правильно декодировать эту почту. Возможно, этот почтовый котент не является правильным или полным.

+0

Он не является полным, его частью, где показана часть встроенного изображения, и как его использование cid для изображения. –

2

Предполагаете, вы используете пакет email Python? Он должен обрабатывать изображения просто отлично. Если вам нужно декодировать изображение самостоятельно, вам нужно взглянуть на кодировку, в данном случае base64. В stdlib есть module for encoding and decoding base64.

Что касается сопоставления, просто получите заголовок Content-Id из изображений, создайте dict, который отображает идентификаторы содержимого в mime-части. Чтобы разрешить URL-адреса в src, проверьте, начинаются ли они с 'cid:' (т. Е. Разрешают внутренний MIME-документ), отключайте префикс и просматривайте их в словаре, который вы создали ранее.

+0

Спасибо за ваш ответ. Да, я использую почтовый пакет. У меня нет проблем при декодировании и чтении содержимого base64. Я сделал это для вложений. Проблема заключается в разборе и сопоставлении содержимого с частью cid. –

+0

Что вы понимаете под парсинг? Идентификатор содержимого не имеет никакого значения, кроме идентификатора, его просто выбрали уникальным в документе. –

+0

синтаксический анализ означает, что мой код работает нормально для всех типов электронных писем, кроме писем с встроенными или встроенными изображениями. Он показывает все содержимое, которое я разместил в вопросе, в теле письма. –

Смежные вопросы