I am trying to extract the sender’s email address from outlook 2013 using win32 package in python. There are two kinds of email address type in my Inbox, exchange and smtp. If I try to print the the sender’s email address of Exchange type, I am getting this:
/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP(FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=6F467C825619482293F429C0BDE6F1DB-
I have already gone through this link but couldn’t find a function through which I can extract the smtp address.
Below is my code:
from win32com.client import Dispatch outlook = Dispatch("Outlook.Application").GetNamespace("MAPI") inbox = outlook.GetDefaultFolder("6") all_inbox = inbox.Items folders = inbox.Folders for msg in all_inbox: print msg.SenderEmailAddress
Currently all the Email Address are coming like this:
/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP(FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=6F467C825619482293F429C0BDE6F1DB-
I found a solution to this in VB.net link but don’t know how to rewrite the same thing in Python.
Advertisement
Answer
Firstly, your code will fail if you have an item other than MailItem
in the folder, such as ReportItem
, MeetingItem
, etc. You need to check that the Class
property is 43 (olMail
).
Secondly, you need to check the sender email address type and use the SenderEmailAddress
property only for the “SMTP” address type. In VB:
for each msg in all_inbox if msg.Class = 43 Then if msg.SenderEmailType = "EX" Then print msg.Sender.GetExchangeUser().PrimarySmtpAddress Else print msg.SenderEmailAddress End If End If next