Я пытаюсь получить результаты, возвращаемые адресной книгой Outlook для данного имени пользователя. По сути, когда я указываю имя пользователя, сценарий должен вернуть идентификатор электронной почты этого пользователя. Приведенный ниже сценарий отлично работает, если после определения получателя есть только один результат. Но бывают случаи, когда 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")
Просматривая адресную книгу Outlook, я вижу книгу под названием «Все пользователи». Я хочу выполнить расширенный поиск, используя поле «Псевдоним», как показано. Этот конкретный способ поиска возвращает только один результат, поскольку строка уникальна. Возможно ли это?
введите здесь описание изображения