Этот вопрос тесно связан с моим предыдущим: Обработка отмены COM-события в VBScript
Я хотел бы написать скрипт, который отправляет электронную почту через SMTP-сервер нашей компании с использованием CDO.
Сначала я попытался написать HTA-приложение для этой цели, но стало довольно неудобно делать его достаточно комфортным, чтобы другие люди могли справиться с ним (из-за правильного разрешения получателей).
Итак, теперь я пытаюсь использовать обычную маску Outlook-Mail, чтобы сначала подготовить почту, а затем перехватить событие send-item через 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-объекта. Я не смог найти ни одного примера для регистрации события MS-Office COM, для которого требуются параметры ...