Solución:
En primer lugar, su código fallará si tiene un elemento que no sea MailItem
en la carpeta, como ReportItem
, MeetingItem
, etc. Necesita comprobar el Class
propiedad.
En segundo lugar, debe verificar el tipo de dirección de correo electrónico del remitente y usar SenderEmailAddress solo para el tipo de dirección “SMTP”. En 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
Solo estoy modificando el programa dado anteriormente en 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
Esto imprimirá todas las direcciones de correo electrónico del remitente en las carpetas de la bandeja de entrada únicamente.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)