Aqui falaremos como automatizar uma mensagem de boas vindas (Welcome Message) ao habilitar um novo usuário no seu servidor Exchange Server 2016.

Abra o Outlook, crie um Novo Email com o conteúdo a ser enviado de boas vindas para ser usada como modelo, salve o código html como welcome.htm, vá nos servidores Exchange e coloque arquivo (crie a estrutura, se necessário) em C:\ExchangeWelcomeMessage\welcome_arquivos\welcome.htm. Em seguida, ainda nos servidores Exchange, crie o arquivo C:\Program Files\Microsoft\Exchange Server\V15\Bin\CmdletExtensionAgents\ScriptingAgentConfig.xml com o seguinte conteúdo:

<?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
 
            # Uncomment the next line to enable logging – this logs information helpful when debugging/modifying script and associated HTML message
    $logFile = “C:\ExchangeWelcomeMessage\log.txt”
    if ($logFile) { $provisioningHandler.UserSpecifiedParameters | fl | Out-File $logFile -Append }
 
    # Get the mailbox
    $attempts = 0
    $mbx = $null # Just to be sure…
    do {
        try
        {
            if ($provisioningHandler.UserSpecifiedParameters.Contains(“Alias”)) {
                $UsrAlias = $provisioningHandler.UserSpecifiedParameters[“Alias”].ToString()
                if ($logFile) { [string]::Format(“Retrieving mailbox using alias: {0}”, $UsrAlias) | Out-File $logFile -Append }
                $mbx = (Get-Mailbox -Filter {Alias -eq $UsrAlias} -ErrorAction SilentlyContinue)
                Remove-Variable UsrAlias
            }
            if (($mbx -eq $null) -and ($provisioningHandler.UserSpecifiedParameters.Contains(“SamAccountName”)))
            {
                $UsrSamAccountName = $provisioningHandler.UserSpecifiedParameters[“SamAccountName”].ToString()
                if ($logFile) { [string]::Format(“Retrieving mailbox using SamAccountName: {0}”, $UsrSamAccountName) | Out-File $logFile -Append }
                $mbx = (Get-Mailbox -Filter {SamAccountName -eq $UsrSamAccountName} -ErrorAction SilentlyContinue)
                Remove-Variable UsrSamAccountName
            }
            if (($mbx -eq $null) -and ($provisioningHandler.UserSpecifiedParameters.Contains(“Identity”)))
            {
                $UsrIdentity = $provisioningHandler.UserSpecifiedParameters[“Identity”].ToString()
                if ($logFile) { [string]::Format(“Retrieving mailbox using identity: {0}”, $UsrIdentity) | Out-File $logFile -Append }
                $mbx = (Get-Mailbox -Identity $UsrIdentity -ErrorAction SilentlyContinue)
                Remove-Variable UsrIdentity
            }
        }
        catch
        {
            $Error.Clear()
        }
        if ($mbx -eq $null)
        {
            Start-Sleep -s 10
            $attempts++
        }
    } while (($attempts -lt 3) -and ($mbx -eq $null))
 
    # If we have the mailbox, we can send the introductory email
    if ($mbx)
    {
        # Mailbox does not have first name property, so we need to get the user account
        $usr = Get-User $mbx.Identity
 
        # Create the objects we need to create the message and send the mail
        $message = New-Object System.Net.Mail.MailMessage
        $smtpClient = New-Object System.Net.Mail.SmtpClient(“SEU SMTP SERVER“) # Change this to point to your SMTP server
 
        # Obtain the message text
        $messageText = [string](Get-Content (“C:\ExchangeWelcomeMessage\welcome.html”)) # Change to point to your HTML welcome message
                                    #$messageText = $messageText.Replace(“#UserFirstName#”, $usr.FirstName) # This replaces #UserFirstName# with the user’s first name – you can add further replacements as needed
 
        # Create the HTML view for this message
        $view = [System.Net.Mail.AlternateView]::CreateAlternateViewFromString($messageText, $null, “text/html”)
 
 
        # Create the message
        $message.From = “REMETENTE@SEUDOMINIO.COM” # Update this to the address you want the welcome message to be sent from
        $message.To.Add($mbx.PrimarySmtpAddress.ToString())
        $message.Subject = “Bem-vindo a EMPRESA!” # Update this to your email subject
        $message.AlternateViews.Add($view)
        $message.IsBodyHtml = $true
 
        # Send the message
        $smtpClient.Send($message)
 
        # Tidy up variables
        Remove-Variable view
        Remove-Variable messageText
        Remove-Variable message
        Remove-Variable smtpClient
        Remove-Variable usr
        Remove-Variable mbx
    }
 
}
</ApiCall>
</Feature>
</Configuration>

Substitua os campos:
“Bem-vindo a EMPRESA!” pelo assunto do e-mail;
“REMETENTE@SEUDOMINIO.COM” pelo e-mail que a mensagem será enviada;
“SEU SMTP SERVER” pelo IP do seu servidor SMTP.

Abra o Exchange Management Shell como administrador e execute o comando:

Enable-CmdletExtensionAgent "Scripting Agent"

Execute o comando abaixo para verificar se o atributo Scripting Agent está como enable:

Get-CmdletExtensionAgent | FT Name,Enabled -AutoSize

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria