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
