Этот вопрос тесно связан с моим предыдущим здесь: Обработка отмены события COM в VBScript
Я хотел бы написать сценарий, который отправляет электронное письмо через SMTP-сервер нашей компании с использованием CDO.
Сначала я попытался написать HTA-приложение для этой цели, но сделать его достаточно удобным, чтобы другие люди могли хорошо с ним работать (из-за правильного разрешения получателя), стало довольно затруднительно.
Итак, теперь я пытаюсь использовать обычную маску Outlook-Mail, чтобы сначала подготовить почту, а затем перехватить событие отправки элемента через Powershell, чтобы передать его содержимое моему сценарию CDO. Я пробовал это через VBScript раньше (см. ссылку выше), но, похоже, это не работает должным образом.
Я новичок в написании сценариев powershell, но в прошлом у меня уже были вещи, которые не работали в VBScript, поэтому я надеюсь, что моя проблема снова будет решена. Прямо сейчас мой скрипт выглядит так:
$WSH = new-Object -ComObject "WScript.Shell"
$Outlook = new-Object -ComObject "Outlook.Application"
$olMailItem = 0
register-objectevent -InputObject $Outlook -EventName "ItemSend"
$MailObject = $Outlook.CreateItem($olMailItem)
$MailObject.Display()
function Outlook_ItemSend([object] $Item, [ref] $Cancel)
{
$Cancel = $TRUE
$WSH.PopUp("Event worked")
return $Null
}
Я еще не зашел так далеко, как надеялся, потому что я вообще не могу понять, как запустить событие. Вы можете найти множество примеров для register-objectevent
в Интернете, но каждый раз это кажется очень специфичным для какого-то специального COM-объекта. Я не смог найти ни одного примера для регистрации COM-события MS-Office, для которого требуются параметры...