Пересобрать сообщения электронной почты, закодированные в «сообщение / частичное» с Python - PullRequest
4 голосов
/ 01 июля 2010

Есть ли способ повторной сборки в сообщениях электронной почты Python, закодированных с помощью Content-Type: message/partial (т. Е. Раздел '7.3.2. Подтип сообщения / частичное' из RFC 1521 )?

В частности, учитывая набор писем , как можно объединить их обратно в оригинал?то есть

emails = [...] # a  list of `email`.

reassembled_email = merge_emails(emails)

Что нужно сделать merge_emails?Сделал ли это какой-нибудь проект Python?

Можно ожидать, что электронное письмо будет примерно таким:

From: me@example.com
To: me2@example.com
Date: Wed, 30 Jun 2010 14:19:45 -0400
MIME-Version: 1.0
Content-Type: message/partial;
 id="TAN_U_R<0.0000749046c4>";
 number=1;
 total=2

From: me@example.com
Subject:
To: me2@example.com
Date: Wed, 30 Jun 2010 14:19:45 -0400
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="DC_BOUND_PRE_<1277921980.0000744>"

This is a multi-part message in MIME format.
--DC_BOUND_PRE_<1277921980.0000c4>
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

This E-mail was sent from Your Printer

Some random text.

--DC_BOUND_PRE_<1277921980.0000744>
Content-Type: application/pdf; name="abcdef.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="abcdef.pdf"

JVBERi0xLjMKJZKgoooKNCAwIG9iago8PC9UeXBlL1hPYmplY3QKL1N1YnR5cGUvSW1hZ2UK
... 

Вот моя первоначальная мысль:

from email import parser 

def merge_emails(emails):
   # we can presume emails are ordered correctly and all the parts accounted for

   content = ''

   for eml im emails:
      content += emails.get_payload()

   return parser.Parser().parsestr(content)

Будет ли это работать (это так просто)?Как вы можете собрать эту электронную почту?

В качестве альтернативы этому в Python, есть ли программа для командной строки Unix / Mac OS X, которая сделает это?

Спасибо за чтениеи любую информацию, которую вы сможете предоставить.

С уважением,

Брайан

Ответы [ 2 ]

3 голосов
/ 22 апреля 2015

У меня работает следующее: (Ubuntu Linux + Thunderbird)

  • Сохраните каждое из сообщений в папке (например, part1.dat, part2.dat ... partN.dat) - важен порядок
  • Объединить файлы: cat part1.dat part2.dat partN.dat> mail.eml
  • Откройте файл с помощью Thunderbird. Thunderbird может понимать файлы .eml и открывает его как электронное письмо (полностью собранное)
2 голосов
/ 10 июля 2010

Хотя это и не решение Python, программа uudeview очень помогла в повторной сборке message/partial email.

...