Пытаюсь отправлять группе контактов Outlook 2016 под именем "test1" сообщение email из скрипта python3:
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants
outlook = EnsureDispatch("Outlook.Application")
newMail = outlook.CreateItem(constants.olMailItem)
newMail.Subject = "This is subject"
samplegrp = newMail.Recipients.Add("test1")
samplegrp.Type = constants.olTo
newMail.Recipients.ResolveAll()
newMail.Send()
резолвер возвращает "False" ну и метод Send() ругается на отсутствие адресов.
Если в newMail.To положить существующий в адресном списке адрес, он "резолвится" (newMail.Recipients.ResolveAll() возвращает "True") и сообщение успешно отправляется.
Мои попытки добраться до этого объекта группы контактов типа AddressEntry "test1" через API вроде успешны:
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants
outlook = EnsureDispatch("Outlook.Application")
newMail = outlook.CreateItem(constants.olMailItem)
namespace = outlook.GetNamespace("MAPI")
addresslist = namespace.AddressLists
addressentries = addresslist.Item(1).AddressEntries
samplegrp = [item for item in addressentries if item.Name == 'test1'][0]
print(samplegrp.Name)
возвращает "test1", но ни "резолвить" его, ни тупо "положить" его в newMail.To и отправить на него мне не удалось. Среди методов и атрибутов этого объекта я не нашел ничего, что мне бы помогло содержимое группы "test1" как-то выковырять из outlook.
Вдогонку...Я понимаю, что можно просто поместить в атрибут .To нужные адреса множеством разных способов (передать строку с адресами через ";" или разными другими методами), но мне хотелось бы задействовать именно группу контактов из Outlook.