Python Outlook: Read Inbox of additional mailbox

heycooldude picture heycooldude · Apr 8, 2014 · Viewed 10.9k times · Source

I'm using Outlook 2010 - and have my main mailbox: [email protected]

I have also added another mailbox to my profile: mb data proc

Both appear as top level folders within Outlook:

[email protected]
-Inbox
-Sent Items
-Deleted Items

mb data proc
-Inbox
-Sent Items
-Deleted Items

I cannot create a different profile for the additional mailbox. It has been added in the same profile.

How do I get a reference to the Inbox in the "mb data proc" mailbox?

This is the same problem as described here Get reference to additional Inbox but this in VBS.

How to do in python?

outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder=outlook.Folders("mb data proc")
msg=folder.Items
msgs=msg.GetLast()
print msgs    

I tried this but I get this error:

       folder=outlook.Folders("mb data proc")
AttributeError: _Folders instance has no __call__ method

Answer

Mohanty.pyt picture Mohanty.pyt · Jul 16, 2019

I had a similar doubt and as I understand it the solution stated here is for Python 2.7

I will try to make it understandable regarding how to operate it using Python 3.+ versions.

import win32com.client
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder = outlook.Folders.Item("Mailbox Name")
inbox = folder.Folders.Item("Inbox")
msg = inbox.Items
msgs = msg.GetLast()
print (msgs)
print (msgs.Subject)

Since _Folder is not callable, you need to use Folders.Item() method in Python 3+ to reference your mailbox.

Hope that was helpful. Thanks!