win32com - код Python для определения вашего собственного адреса электронной почты в Outlook?

Я создал программу, когда пользователь запускает ее, она отправляет вложение себе по электронной почте. Правильный код - это когда его запускает другой пользователь, код необходимо изменить для другого пользователя (что неэффективно). Есть ли код Python для идентификации человека, использующего адрес электронной почты Outlook программы, и отправляет его себе. Я использую win32com.

вместо

mail.to "email address"

to

mail.to "user of the program"

person Johnseito    schedule 22.07.2017    source источник
comment
Чтобы ответить на ваш второй вопрос, я бы проверил этот вопрос об использовании модуля os, и если все, что вам нужно, это имя пользователя, оно должно работать. Если есть другие факторы, которые могут изменить адрес электронной почты в Outlook или потребовать большей точности, потребуется позвонить в ADSI, и я взгляну на this. Если вам действительно нужен адрес электронной почты, назначенный ADSI для MAPI, используйте PS и направьте вывод   -  person LinkBerest    schedule 22.07.2017
comment
По сути, ADSI (интерфейсы службы Active Directory) — это лишь часть COM-интерфейсов, которая включает имя пользователя. MAPI (интерфейс программирования приложений для обмена сообщениями) — это API, подключенный к Outlook. PS — это Powershell (в основном язык сценариев Windows). Много работы, которую я делаю с системами MS, я начинаю с оболочки PS, которая просто захватывает кучу информации и передает ее программе Python, которая затем выполняет работу (обычно после помещения информации в dict, именованный кортеж или передачу его к классу).   -  person LinkBerest    schedule 22.07.2017
comment
Спасибо за обилие информации, но что такое ADSI и MAPI, а также использование PS и конвейера для вывода, и как используется этот метод или процесс? Как долго этот процесс. Я предполагаю, что если в системе много писем, обработка занимает очень много времени? Электронная почта непредсказуема в том смысле, что для некоторых людей это может быть имя.фамилия@abc.com или фамилия.имя@xyz.com или имя.отчество.фамилия@123.com и т. д.   -  person Johnseito    schedule 22.07.2017


Ответы (1)


Используя объектную модель Outlook, прочтите свойство Application.Session.CurrentUser.Address. В случае Exchange SMTP-адрес можно получить из Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress (будьте готовы обрабатывать пустые значения и исключения).

person Dmitry Streblechenko    schedule 22.07.2017