В рамках нашего процесса регистрации мы отправляем кредиты пользователям менеджерам по найму. У меня есть шаблон DRAFT, сохраненный в Outlook, и я запускаю сценарий PS, который использует шаблон Outlook и заменяет ключевые слова информацией о полномочиях (имя пользователя, пароль и т. Д.). Уже много лет он отлично работает, MARCOM хочет улучшить его и хочет, чтобы мы добавили встроенные изображения в новые письма о найме. Итак, я добавил изображения в шаблон, но когда я сейчас запускаю свой скрипт PS, изображения не появляются во вновь созданных электронных письмах. Существует просто красный «X» , и Outlook сообщает, что изображение не может быть отображено.
Некоторые из моих ключевых требований:
- Из того, что я могу сказать, я не могу отправить электронное письмо с использованием SMTP (я должен использовать Outlook), потому что доставка вновь созданных электронных писем должна быть отложена (через DeferredDeliveryTime ). Если бы я мог отправлять с SMTP, я мог бы использовать что-то вроде , но я не могу использовать SMTP. Я попытался прикрепить изображения к черновику электронной почты в Outlook и использовать метод cid: для вызова имен вложенных файлов, но не смог заставить его работать.
- Мы включили фонетическое написание паролей (уникальное для каждого письма), поэтому слияние не будет работать либо
- Все изображения имеют гиперссылки (на различные сайты / услуги)
Я пробовал множество подходов, пытаясь решить эту проблему, в том числе сохранение черновика электронной почты в виде HTML и использование Get-Content -Raw для чтения в коде HTML и т. Д. и это не сработало
Я пытался использовать Mozilla Thunderbird (как указано здесь, электронное письмо powershell с html-изображением, отображаемым красным x ), чтобы получить Base64 изображения, но это тоже не сработало.
Общие основы моего кода PS (в части взаимодействия с Outlook):
If ($arrNewHireCSVobjects.Count -ge 1)
{
[string]$strTemplateSubjectToUse = 'Account Information - xyz'
$oDraftsFolderIndex = 16
$objOutlook = New-Object -comObject Outlook.Application
$oNameSpace = $objOutlook.GetNameSpace("MAPI")
$oDraftsFolder = $oNameSpace.GetDefaultFolder($oDraftsFolderIndex)
$oTemplateToUse = $oDraftsFolder.Items | Where-Object {$_.Subject -eq $strTemplateSubjectToUse}
$arrNewHireCSVobjects | ForEach-Object {
$strTemp = $_."Manager ID"
$ManagerUPN = ($arrManagerInfo | Where-Object {$_.employeeID -eq $strTemp}).userPrincipalName
$NewOutlookEmail = $objOutlook.CreateItem(0)
$NewOutlookEmail.SentonBehalfofName = "IT.Service.Desk@domain.com"
$NewOutlookEmail.Recipients.Add($_."Current email address") | Out-Null
##
[string]$strPhoneticPassword = ""
For ($i = 0; $i -le $_."Temp password".Length; $i++) {
[string]$decimal = [byte][char]($_."Temp password"[$i])
If ($i -eq 0)
{
$strPhoneticPassword = $PhoneticTable[$decimal]
}
ElseIf ($i -eq $_."Temp password".Length)
{
$strPhoneticPassword = $strPhoneticPassword
}
Else
{
$strPhoneticPassword = $strPhoneticPassword + " / " + $PhoneticTable[$decimal]
}
}
$strPhoneticPassword = ($strPhoneticPassword.Trim()).Replace(' ',' ')
##
$NewOutlookEmail.Subject = $strTemplateSubjectToUse -replace 'xyz', ($_."First".Trim() + " " + $_."Last".Trim())
$NewOutlookEmail.HTMLBody = $NewOutlookEmail.HTMLBody -replace "TEMPnewhirename", ($_."First".Trim() + " " + $_."Last".Trim())
$NewOutlookEmail.HTMLBody = $NewOutlookEmail.HTMLBody -replace "TEMPusername", $_.Username
$NewOutlookEmail.HTMLBody = $NewOutlookEmail.HTMLBody -replace "TEMPemailaddress", $_."Email Address"
$NewOutlookEmail.HTMLBody = $NewOutlookEmail.HTMLBody -replace "TEMPtemppassword", $_."Temp password"
$NewOutlookEmail.HTMLBody = $NewOutlookEmail.HTMLBody -replace "TEMPphoneticpassword", $strPhoneticPassword
$NewOutlookEmail.DeferredDeliveryTime = (Date).AddHours(4)
$NewOutlookEmail.Send()
}
}
Информация о сотруднике импортируется из CSV, изображения в шаблоне являются стандартными, встроенными изображениями (кроме ссылок). Фонетический пароль - это отдельная функция. Они хотят, чтобы дюжина встроенных изображений в этом шаблоне находилась в черновом сообщении электронной почты, но ни одно из них не отображается в конечном отправленном электронном письме (но гиперссылки по-прежнему работают с изображениями).
Учитывая мои требования использования клиента Outlook по сравнению с использованием чего-то вроде Send-MailMessage , может ли PS работать для отправки встроенных изображений, которые являются частью существующего ЧЕРНОВОГО письма в Outlook (2013 или 2016) успешно (и перед отправкой изменили шаблон DRAFT для замены определенных переменных), который включает пример / шаблон подписи? Если да, что мне не хватает в моем PS-коде, который позволит правильно отображать встроенные изображения?
Заранее спасибо !!
* * UCG тысяча сорок-девять