I am trying to download the outlook email attachments using python 3.4, I have logged in outlook usingy Gmail credentials. Can I know how to get attachments from outlook. Thanks in advance
Asked
Active
Viewed 2,537 times
0
-
check this:https://stackoverflow.com/questions/43857002/script-in-python-to-download-email-attachments and this https://geekdudes.wordpress.com/2018/12/26/python-script-for-parsing-office-365-emails/ – I_Al-thamary Jan 24 '19 at 19:08
-
Also https://pyoutlook.readthedocs.io/en/latest/pyOutlook.html#pyOutlook.core.message.Message.attachments – blueteeth Jan 24 '19 at 19:16
-
Hi @saik how much experience do you have working with Python? – Tim McNamara Jan 24 '19 at 19:54
-
I am new to python real time projects @Tim McNamara – saik Jan 25 '19 at 06:50
1 Answers
1
Try this:
import email, imaplib
import os
class FetchEmail():
def __init__(self,
mail_server="outlook.office365.com",
username="username@outlook.com",
password="'password'"):
self.error = None
self.connection = None
self.mail_server = mail_server
self.username = username
self.password = password
self.connection = imaplib.IMAP4_SSL(mail_server)
self.connection.login(username, password)
self.connection.select(readonly=False) # so we can mark mails as readread
def close_connection(self):
"""
Close the connection to the IMAP server
"""
self.connection.close()
def save_attachment(self, msg, download_folder="/tmp"):
"""
Given a message, save its attachments to the specified
download folder (default is /tmp)
return: file path to attachment
"""
att_path = "No attachment found."
for part in msg.walk():
if part.get_content_maintype() == 'multipart':
continue
if part.get('Content-Disposition') is None:
continue
filename = part.get_filename()
att_path = os.path.join(download_folder, filename)
if not os.path.isfile(att_path):
fp = open(att_path, 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
return att_path
def fetch_unread_messages(self):
"""
Retrieve unread messages
"""
emails = []
(result, messages) = self.connection.search(None, 'UnSeen')
if result == "OK":
for message in messages[0].split(' '):
try:
ret, data = self.connection.fetch(message,'(RFC822)')
except:
print ("No new emails to read.")
self.close_connection()
exit()
msg = email.message_from_string(data[0][1])
if isinstance(msg, str) == False:
emails.append(msg)
response, data = self.connection.store(message, '+FLAGS','\\Seen')
return emails
self.error = "Failed to retreive emails."
return emails
fe = FetchEmail()
you can see also these:How to fetch an email body using imaplib in python? Python Script for downloading new email attachments using imap

I_Al-thamary
- 3,385
- 2
- 24
- 37