2016-02-26 4 views
0

У меня есть тело электронной почты, которое выглядит примерно так.Python-Parse email Body и truncate MIME headers

Теперь я хочу удалить из него весь заголовок и просто написать текст сообщения для разговора. Как я могу сделать это в python?

Я пробовал модуль email.parser, но это не дает мне результат, который я хочу.

Для получения более подробной информации, пожалуйста, найдите приведенный ниже код.

import email 
a="""--c66f5985-233d-4e89-b598-6398b60cbe00 
Content-Type: multipart/alternative; 
    differences="Content-Type"; 
    boundary="d5eff9f8-76b3-4320-adfb-1e51add8fa8f" 

--d5eff9f8-76b3-4320-adfb-1e51add8fa8f 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: quoted-printable 

THis is a demo email body 

Thanks And Regards, 
Ana 
""" 



b = email.message_from_string(a) 
if b.is_multipart(): 
    for payload in b.get_payload(): 
     # if payload.is_multipart(): ... 
     print (payload.get_payload()) 
else: 
    print (b.get_payload()) 

ответ

0
import imaplib,email 

hst = "your.host.adresse.com" 
usr = "login" 
pwd = "password" 

imap = imaplib.IMAP4(hst) 

try: 
    imap.login(usr, pwd) 
except Exception as e: 
    raise IOError(e) 

try: 
    imap.select("Inbox") # Tell Imap where to go 
    result, data = imap.uid('search', None, "ALL") 
    latest = data[0].split()[-1] 
    result, data = imap.uid('fetch', latest, '(RFC822)') 
    a = data[0][1] # This contains the Mail Data 


except Exception as e: 
    raise IOError(e) 

b = email.message_from_string(a) 
if b.is_multipart(): 
    for payload in b.get_payload(): 
     b = (payload.get_payload()) 
else: 
    b = (b.get_payload()) 

print b 

Это удаляет все вещи из почты, который вы не хотите, в окончательном тексте. Я проверил это с вашим кодом. Вы не показывали, как вы импортируете почту (ваш a), поэтому я предполагаю, что здесь вы получаете проблему декодирования.

Если у вас есть какие-либо проблемы с HTML-Mails:

from bs4 import BeautifulSoup 
soup = BeautifulSoup(b, 'html.parser') 
soup = soup.get_text() 
print soup 

Это должно сделать работу на данный момент, но я бы посоветовал вам изменить парсер питона по умолчанию LXML или html5lib.

+0

Что делать, если в моем письме содержится много сообщений электронной почты – sangeet

+0

И мне просто помогает с электронной почтой, как показано выше, без имен хостов и других учетных данных ... – sangeet

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

  • Нет связанных вопросов^_^