Python: анализ писем со встроенными изображениями - PullRequest
2 голосов
/ 02 декабря 2010

Я работаю над приложением, которое подключается к почтовому серверу с помощью библиотеки 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

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

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

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

0 голосов
/ 03 декабря 2010

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

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

0 голосов
/ 02 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...