Создайте проект электронной почты Outlook с помощью PowerShell
Я создаю PowerShell script для автоматизации процесса на работе. Этот процесс требует, чтобы электронное письмо заполнялось и отправлялось кому-то другому. Письмо всегда будет следовать за одним и тем же шаблоном, но, вероятно, никогда не будет одинаковым каждый раз, поэтому я хочу создать проект электронной почты в Outlook и открыть окно электронной почты, чтобы дополнительные данные могли быть заполнены перед отправкой.
Я немного поработал в Интернете, но все, что я могу найти, - это код для отправки сообщений по электронной почте. Код выглядит следующим образом:
$ol = New-Object -comObject Outlook.Application
$mail = $ol.CreateItem(0)
$Mail.Recipients.Add("[email protected]")
$Mail.Subject = "PS1 Script TestMail"
$Mail.Body = "
Test Mail
"
$Mail.Send()
Короче говоря, кто-нибудь знает, как создать и сохранить новый проект электронной почты Outlook и сразу открыть этот проект для редактирования?
Ответы
Ответ 1
$olFolderDrafts = 16
$ol = New-Object -comObject Outlook.Application
$ns = $ol.GetNameSpace("MAPI")
# call the save method yo dave the email in the drafts folder
$mail = $ol.CreateItem(0)
$null = $Mail.Recipients.Add("[email protected]")
$Mail.Subject = "PS1 Script TestMail"
$Mail.Body = " Test Mail "
$Mail.save()
# get it back from drafts and update the body
$drafts = $ns.GetDefaultFolder($olFolderDrafts)
$draft = $drafts.Items | where {$_.subject -eq 'PS1 Script TestMail'}
$draft.body += "`n foo bar"
$draft.save()
# send the message
#$draft.Send()
Ответ 2
Основываясь на других ответах, я немного сократил код и использовал
$ol = New-Object -comObject Outlook.Application
$mail = $ol.CreateItem(0)
$mail.Subject = "<subject>"
$mail.Body = "<body>"
$mail.save()
$inspector = $mail.GetInspector
$inspector.Display()
Это удаляет ненужный шаг извлечения почты из папки черновиков. Кстати, он также удаляет ошибку, которая произошла в коде Шей Леви, когда у двух черновиков писем был один и тот же вопрос.
Ответ 3
Я думаю, что ответ Shay Levy почти есть: единственный недостающий бит - это отображение элемента.
Для этого вам нужно только получить соответствующий объект-инспектор и сказать ему, чтобы он отображался, таким образом:
$inspector = $draft.GetInspector
$inspector.Display()
Обратитесь к справке MSDN на GetInspector для улучшения поведения.
Ответ 4
Думаю, я бы добавил к этому. Есть несколько шагов, которые вы можете сэкономить, если знаете много основ (предмет, получатели или другие аспекты). Сначала создайте шаблон электронной почты и сохраните его, например. где-нибудь, может быть, с кодом?
Что касается самого кода, он следует тем же самым, что и другие.
Заимствование у Джейсона:
$ol = New-Object -comObject Outlook.Application
$msg = $ol.CreateItemFromTemplate(<<Path to template file>>)
Измените при необходимости. Добавить поля или изменить тело. Сообщение до сих пор можно просмотреть до отправки тем же способом $msg.GetInspector.Display()
. Затем позвоните $msg.send()
, чтобы отправить!