Для реализации данной функциональности будем использовать агента «Scripting Agent» сервера MS Exchange ( по умолчанию агент отключен)
1. агент сценариев использует файл “ScriptingAgentConfig.xml”, который находится в директории \Bin\CmdletExtensionAgents папки в которую установлен сервер Ms Exchange.
<?xml version="1.0" encoding="utf-8" ?> <Configuration version="1.0"> <Feature Name="WelcomeEmail" Cmdlets="New-Mailbox,Enable-Mailbox"> <ApiCall Name="OnComplete"> if($succeeded) { # Waiting for synchronization after mailbox has been created. Set-ADServerSettings -ViewEntireForest $true Start-Sleep -s 10 # New-Mailbox triggered. Taking SamAccountName parameter. if ($provisioningHandler.UserSpecifiedParameters.Contains("SamAccountName") -eq $true) { $UsrSamAccountName = $provisioningHandler.UserSpecifiedParameters["SamAccountName"] $UsrAlias = (Get-Mailbox -Filter {SamAccountName -eq $UsrSamAccountName}).Alias.ToString() } # Enable-Mailbox triggered. Taking Identity parameter, this is the only one avalaible in this case. if ($provisioningHandler.UserSpecifiedParameters.Contains("Identity") -eq $true) { $UsrIdentity = $provisioningHandler.UserSpecifiedParameters["Identity"].ToString() $UsrAlias = (Get-Mailbox -Identity $UsrIdentity).Alias.ToString() } # Defining variables. $UsrAddr = (Get-Mailbox -Filter {Alias -eq $UsrAlias}).PrimarySmtpAddress.ToString() $UsrOU = (Get-Mailbox -Filter {Alias -eq $UsrAlias}).OrganizationalUnit # Sending email notification to the user in specific OU. if ($UsrOU -match "DOMAIN.RU/Unit_NAME") { #################### # HR # #################### $fromHR="HR@iamroot.ru" $SubjectHR="'Добро пожаловать в компанию iamroot'" $BodyHR = [string] (get-content ("c:\welcome\WelcomeMSGHR.htm")) $fileHR = "c:\welcome\WelcomeMSGHR.htm" $smtp="MAIL" Send-MailMessage -From $fromHR -To $UsrAddr -Subject $SubjectHR -Body $BodyHR -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8) -SmtpServer $Smtp #################### # IT # #################### $fromIT="post@iamroot.ru" $SubjectIT="'IT. (Обязательно к прочтению)'" $BodyIT = "'Мы рады приветствовать Вас, $UsrAddr, в компании iamroot и просим ознакомиться с правилами работы и некоторыми инструкциями… файлы во вложении'" $fileIT1 = "c:\welcome\1.pdf" $fileIT2 = "c:\welcome\2.pdf" $fileIT3 = "c:\welcome\3.pdf" $fileIT4 = "c:\welcome\4.pdf" $fileIT5 = "c:\welcome\5.pdf" $fileIT6 = "c:\welcome\6.pdf" Send-MailMessage -From $fromIT -To $UsrAddr -Subject $SubjectIT -Body $BodyIT -Attachment $fileIT1,$fileIT2,$fileIT3,$fileIT4,$fileIT5,$fileIT6 -Encoding ([System.Text.Encoding]::UTF8) -SmtpServer $Smtp #################### } # Clearing variables. Each one in its own line in order to prevent error messages from being shown on EMC. if ($UsrAlias) { Remove-Variable UsrAlias } if ($UsrAddr) { Remove-Variable UsrAddr } if ($UsrOU) { Remove-Variable UsrOU } if ($UsrMsg) { Remove-Variable UsrMsg } if ($UsrIdentity) { Remove-Variable UsrIdentity } if ($UsrSamAccountName) { Remove-Variable UsrSamAccountName } } </ApiCall> </Feature> </Configuration>
Стартуем агента.
PS1> Enable-CmdletExtensionAgent «Scripting Agent»
з.ы. Сохранять конфиг и HTML исключительно в кодировке UTF-8
Интересно. Внедрил со своими правками =)
Но вот еще интересная вещь, как бы в письмо вставить картинки?
По разному пытался.. не выходит никак, уже и картинку встраивал непосредственно в код… Не хочет, а было бы здорово.
Я делал приветственное письмо с картинками следующим образом:
Для начала накидал письмо в Word. Отформатировал текст, чтобы было красиво, напихал туда картинок, а потом готовое письмо из ворда сохранил в формате Web-страница (htm,html). Ворд сам сохранит все твои картинки рядом со страницей приветственного письма. Теперь когда ты в коде Scripting Agent’a указываешь откуда брать приветственное письмо всё автоматом подтянется.