Чтение сообщений Gmail с использованием Python IMAP - PullRequest
0 голосов
/ 25 декабря 2018

Несмотря на то, что я сделал большую часть этого после поиска большого количества сайтов, я все еще не могу получить нужный вывод.

Код:

import imaplib

import smtplib

import email

mail=imaplib.IMAP4_SSL("imap.gmail.com")

mail.login("**************@gmail.com","********")

mail.select('inbox')

type,data=mail.search(None,'ALL')

mail_ids=data[0]

id_list=mail_ids.split()

for i in range(int(id_list[-1]),int(id_list[0])-1,-1):

    typ,data=mail.fetch(i,'(RFC822)') 
        for response_part in data :
            if isinstance(response_part,tuple):
                msg=email.message_from_string(response_part[1])
                email_from=msg['from']
                email_subj=msg['subject']
                c=msg.get_payload(0)
                print email_from
                print "subj:",email_subj
                print c

Вывод:

Бхарат Джоши Субдж: хе-хе Ни от кого Вторник 25 декабря 15:48:52 2018 Тип содержимого: текст / обычный текст;charset = "UTF-8"

hello444444444

Бхарат Джоши subj: от никто вторник 25 декабря 15:48:52 2018 Тип содержимого: текст / обычный текст;charset = "UTF-8"

33333

Бхарат Джоши Субдж: Ни от кого Вторник 25 декабря 15:48:53 2018 Тип содержимого: текст / обычный текст;charset = "UTF-8"

привет - 22 * ​​1019 *

То, что меня беспокоит, это дополнительная вещь, которую я получаю, то есть

"Ни от кого...... "и" Тип содержимого .... "

Как я могу удалить их?

1 Ответ

0 голосов
/ 25 декабря 2018

Ах, «красота» электронных писем… Очевидно, вы сталкиваетесь с составными почтовыми сообщениями, и для них метод get_payload() также выводит заголовки.Вам нужно было бы использовать msg.walk() примерно так:

for response_part in data :
    if isinstance(response_part,tuple):
        msg=email.message_from_string(response_part[1])
        print "subj:", msg['subject']
        print "from:", msg['from']
        print "body:"
        for part in msg.walk():
            if part.get_content_type() == 'text/plain':
                print part.get_payload()

Для более полного ответа взгляните на этот ответ stackoverflow

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