Im trying to read email and download the attachment to my own folder using win32com module in Python, I stopped at getting the attachment object:
from win32com.client import Dispatch
import datetime as date
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
val_date = date.date.today()
sub_today = 'Hi'
att_today = 'Attachment.xlsx'
for msg in all_inbox:
if msg.Subject == sub_today:
break
for att in msg.Attachments:
if att.FileName == att_today:
break
att.SaveAsFile('new.xlsx')
att.ExtractFile('new.xlsx')
open(att)
att.WriteToFile('x')
None of the last 4 lines work...
>>> att.ExtractFile('new.xlsx')
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.ExtractFile
>>> open(att)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: coercing to Unicode: need string or buffer, instance found
>>> att.WriteToFile('x')
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: <unknown>.WriteToFile
att.SaveAsFile('new.xlsx')
has no error, but there is no such file in the working directory. Seems that the line was just ignored...
Could anyone help? Thanks in advance!
First, we import the required modules to connect to Gmail account. Next, we save Gmail username and password. We also store the path to directory where we need to download & store attachment. Next, we create a folder DataFiles where we will be downloading the attachments to, if it doesn't exist.
There are several APIs available to convert text to speech in python. One of such APIs available in the python library commonly known as win32com library. It provides a bunch of methods to get excited about and one of them is the Dispatch method of the library.
Just to update, I have solved this issue by claiming both dir
and the file name itself in SaveAsFile:
att.SaveAsFile(os.getcwd() + '\\new.xlsx')
It is not like most threads I've seen here saying that you only need to put path in it. Actually both path and file name are needed.
Also, weirdly, you have to put os.getcwd()
here since Python wouldn't recognize current running dir
- in R, after we set working dir
with getwd()
, we are able to write to any file at this location.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With