I read this already and wrote this script to fetch body for emails in some mail box which title begins with \'$\' and is sent by some sender.
import email, g
import datetime
import email
import imaplib
import mailbox
import re
EMAIL_ACCOUNT = "yourmail@yahoo.com"
PASSWORD = "password"
mail = imaplib.IMAP4_SSL('imap.mail.yahoo.com')
mail.login(EMAIL_ACCOUNT, PASSWORD)
mail.select('INBOX')
result, data = mail.search(None, '(FROM "Sender Email")','ALL')
result, data = mail.search(None, '(SUBJECT "Message")','ALL')
i = len(data[0].split())
if i == 1:
latest_email_uid = data[0].split()[0]
result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = email_data[0][1]
raw_email_string = raw_email.decode('utf-8')
email_message = email.message_from_string(raw_email_string)
body = email_message.get_payload(decode=True)
for part in email_message.walk():
if part.get_content_type() == "text/plain":
emailBody = part.get_payload(decode=True)
print(emailBody)
else:
continue
else:
print('Email NOT ' + EMAIL_ACCOUNT )