9 de set. de 2011

Mandando e-mail com Powershell

image

Quer algo mais cômodo do que você automatizar rotinas nos servidores e receber um aviso, status ou até mesmo log das operações no seu e-mail!?

Seu chefe desconfia que as rotinas estão rodando nos servidores? Coloque ele na cópia dos e-mails Winking smile! (Like a boss)

image

Ok, então fica registrado aqui uma função Powershell para envio de e-mails.

function SendMail([string] $smtpServer, [string] $smtpUser, [string] $smtpPassword, [string] $to, [string] $title, [string] $body)
{
    # -> Instancia um cliente SMTP.
    $smtp = new-object System.Net.Mail.SmtpClient;
   
    # -> Host do servidor SMTP.
    $smtp.Host = $smtpServer;
   
    # -> Autenticação no servidor SMTP.
    $smtp.Credentials = New-Object System.Net.NetworkCredential($smtpUser, $smtpPassword);
   
    # -> Instancia uma mensagem de e-mail.
    $message = New-Object System.Net.Mail.MailMessage;
   
    # -> Formata a mensagem para receber HTML.
    $message.IsBodyhtml = $true;
    $message.Body = $body;
    $message.Subject = $title;
   
    # -> Define o endereço de origem como o usuário que autenticou no servidor SMTP.
    $message.From = New-Object System.Net.Mail.MailAddress $smtpUser;
   
    # -> Quebra os endereços de destino de acordo com as separações (";").
    $toItems = $to.Split(";");
           
    foreach($toItem in $toItems)
    {
        # -> Adiciona os e-mails válidos de destino.
        if($toItem -ne $null -and $toItem.Trim() -ne "")
        {
            $toAdress = New-Object System.Net.Mail.MailAddress $toItem;
            $message.To.Add($toAdress);
        }
    }
           
    # -> Envia o e-mail.
    $smtp.Send($message);
}

Sem mais complicações, como já citei em outras oportunidades, o Powershell dispõe do poder das classes .NET. Então bata usá-las para essa tarefa Open-mouthed smile

Be happy!

1 comentários:

Rafael Sanceverino Mattos disse...

Grande post Eduardo, e pretendo utilizá-lo por aqui, mas tenho algumas dúvidas: Onde altero as contas de destino, servidores de envio. Será que pode dar mais essa dica? Vlw...grande abraço.
rafael@ti3.com.br
@rafasanceverino