3

So I'm working on a Python script to extract text from an email and following these instructions to do so. This is the script thus far:

import imapclient
import pprint
import pyzmail

mymail = "my@email.com"
password = input("Password: ")

imapObj = imapclient.IMAPClient('imap.gmail.com' , ssl=True)
imapObj.login(mymail , password)
imapObj.select_folder('INBOX', readonly=False)
UIDs = imapObj.search(['SUBJECT Testing'])
rawMessages = imapObj.fetch([5484], ['BODY[]'])
message = pyzmail.PyzMessage.factory(rawMessages[5484]['BODY[]'])

However I'm getting this error:

message = pyzmail.PyzMessage.factory(rawMessages[5484]['BODY[]'])
KeyError: 5484

5484 being the ID for the email that the search function finds. I've also tried putting UIDs in instead of 5484, but that doesn't work either. Thanks in advance!

Captainbob
  • 31
  • 3
  • What does rawMessages look like and what does UIDs look like? I'm guessing there is message with a UID of 5484. IMAPClient uses UIDs by default. – Menno Smits Dec 14 '16 at 02:07

2 Answers2

8

Thank you @Madalin Stroe .

I use python3.6.2 and pyzmail1.0.3 on Win10. When I run message = pyzmail.PyzMessage.factory(rawMessages[4]['BODY[]']) The ERR shows like this:

Traceback (most recent call last):
File "PATH/TO/mySinaEmail.py", line 42, in <module>
message = pyzmail.PyzMessage.factory(rawMessages[4]['BODY[]'])
KeyError: 'BODY[]'

When I modified this to message = pyzmail.PyzMessage.factory(rawMessages[4][b'BODY[]']), it run well.

Allis Gao
  • 91
  • 1
  • 6
5

Try replacing ['BODY[]'] with [b'BODY[]']

Madalin Stroe
  • 51
  • 1
  • 2