Приведенный ниже сценарий отлично работает, если после определения получателя есть только один результат. Но бывают случаи, когда Outlook может возвращать два или более результатов, и нам приходится вручную выбирать тот, который нам нужен.
Я совершенно не уверен, как получить все результаты, возвращаемые функциейsolve().
Код: Выделить всё
import win32com.client
import sys
def get_user_email(username: str) -> str | None:
outlook = win32com.client.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace("MAPI")
recipient = namespace.CreateRecipient(username)
recipient.Resolve()
if recipient.Resolved:
exchange_user = recipient.AddressEntry.GetExchangeUser()
if exchange_user:
return exchange_user.PrimarySmtpAddress
return None
if __name__ == "__main__":
username = sys.argv[1] if len(sys.argv) > 1 else input("Enter username: ")
email = get_user_email(username)
print(email if email else "None")

введите здесь описание изображения