У меня есть входящие, и мне нужно написать код, который срабатывает каждый раз, когда приходит новое сообщение, и извлекает текст этого письма.
Пока у меня есть этот код:
import poplib, email
from email import parser
pop_conn = poplib.POP3_SSL('pop.gmail.com')
email_user = 'email@gmail.com'
email_pass = 'password'
pop_conn.user(email_user)
pop_conn.pass_(email_pass)
#Get messages from server:
messages = [pop_conn.retr(i) for i in range(1,
len(pop_conn.list()[1]) + 1)]
#Parse message intom an email object:
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
for message in messages:
print(message.get_payload(None, True))
pop_conn.quit()
Я получаю ошибку:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-2a08d6a8ccf9> in <module>()
2 #Parse message intom an email object:
3 #messages = [email.message_from_bytes(mssg) for mssg in messages]
----> 4 messages = [parser.Parser().parsestr(mssg) for mssg in messages]
5 for message in messages:
6 # print(message['body'])
<ipython-input-6-2a08d6a8ccf9> in <listcomp>(.0)
2 #Parse message intom an email object:
3 #messages = [email.message_from_bytes(mssg) for mssg in messages]
----> 4 messages = [parser.Parser().parsestr(mssg) for mssg in messages]
5 for message in messages:
6 # print(message['body'])
/Applications/anaconda3/lib/python3.6/email/parser.py in parsestr(self, text, headersonly)
66 the file.
67 """
---> 68 return self.parse(StringIO(text), headersonly=headersonly)
69
70
TypeError: initial_value must be str or None, not tuple
TypeError: initial_value must be str or None, not tuple
Почему я получаю кортеж? Как извлечь тело из сообщений [n]?