May-15-2019, 07:27 AM
Hi,
I am getting specific mail in Inbox with subject 'ACTIVE DSL DUMP EPOS' on daily basis, with extension .gz. I am trying to download attachment, however I am getting error. Below is the my script, post reading some online docs.
I am getting specific mail in Inbox with subject 'ACTIVE DSL DUMP EPOS' on daily basis, with extension .gz. I am trying to download attachment, however I am getting error. Below is the my script, post reading some online docs.
import imaplib import email import os save_path = '/home/downloads' mail = imaplib.IMAP4_SSL('outlook.office365.com') mail.login("xyz.com", "Abc1@2015") mail.select("Inbox") typ, msgs = mail.search(None, '(SUBJECT "ACTIVE DSL DUMP EPOS")') msgs = msgs[0].split() for emailid in msgs: resp, data = mail.fetch(emailid, "(RFC822)") email_body = data[0][1] m = email.message_from_string(email_body) if m.get_content_maintype() != 'multipart': continue for part in m.walk(): if part.get_content_maintype() == 'multipart': continue if part.get('Content-Disposition') is None: continue filename = part.get_filename() if not os.path_exists(save_path): os.makedirs(save_path) with open(os.path.join_path(save_path,filename), 'wb') as fp: fp.write(part.get_payload(decode=True))
Error:Traceback (most recent call last):
File "eposDatadownload.py", line 17, in <module>
m = email.message_from_string(email_body)
File "/usr/local/lib/python3.6/email/__init__.py", line 38, in message_from_string
return Parser(*args, **kws).parsestr(s)
File "/usr/local/lib/python3.6/email/parser.py", line 68, in parsestr
return self.parse(StringIO(text), headersonly=headersonly)
TypeError: initial_value must be str or None, not bytes