Для реализации данной функциональности будем использовать агента «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 указываешь откуда брать приветственное письмо всё автоматом подтянется.