Extract sender's email address from Outlook Exchange in Python using win32

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 the Class property.

Secondly, you need to check the sender email address type and use the SenderEmailAddress 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

I am just modifying the program given above in Python.

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:
       if msg.Class==43:
           if msg.SenderEmailType=='EX':
               print msg.Sender.GetExchangeUser().PrimarySmtpAddress
           else:
               print msg.SenderEmailAddress

This will print out all the sender's email address in your inbox folders only.