Enviando e-mails pelo Powershell
Introdução
Com o Powershell podemos utilizar objetos nativos do Net.Framework, um desses objetos é o SMTPClient, que é utilizado para enviar e-mails, isso pode ser muito útil em nossos scripts, quando queremos saber se houve erro ou algo do gênero.
Utilizando o SMTPClient
Primeiro temos que criar em nossa sessão de Powershell um objeto do tipo SMTPClient.
$SMTPClient = New-Object System.Net.Mail.SMTPClient
Após temos que preencher as propriedades deste objeto, mas para isso antes temos que conhece-las, podemos utilizar o seguinte comando para nos listar as propriedades disponíveis do objeto.
$SMTPClient | FL *
Como vamos enviar um e-mail autenticando via SMTP precisamos criar um objeto para nossas credenciais, conforme a propriedade Credentials solicita.
$Credentials = new-object System.Net.networkCredential
$Credentials.domain = "contoso.com.br"
$Credentials.UserName = "matheus@contoso.com.br"
$Credentials.Password = ""
Começamos então a preencher as propriedades do nosso objeto SmtpClient.
$SmtpClient.Host = 'mailserver01.contoso.com.br'
$SmtpClient.Credentials = $Credentials
Agora todas propriedades de nosso objeto já estão preenchidas corretamente precisamos achar o metodo que faz ele enviar a mensagem, fazemos isso usando o Get-Member em nosso objeto.
$SmtpClient | Get-Member | FL (Adicionamos o FL no final somente para facilitar a visualização dos parâmetros que o método vai receber)
Achamos então o metodo Send que recebe os parâmetros, Send(string from, string recipients, string subject, string body), então vamos enviar nosso primeiro e-mail a partir do Powershell.
$SmtpClient.Send('from@contoso.com.br','to@contoso.com.br','Subject – Nada de mais','Oi só mais um spam...')
Se tudo estiver ok, com nosso servidor de e-mail receberemos nosso belo spam na caixa de entrada em breve, caso nosso servidor de e-mail aceite envios sem autenticação de nosso ip podemos fazer da mesma forma só deixamos o parâmetro Credentials vazio.
Podemos criar uma Função para tornar o processo mais agil.
Function EnviaMail($destino,$mensagem,$assunto)
{
$email = new-object System.Net.Mail.MailMessage("script@contoso.com.br",$destino)
$email.IsBodyHtml = $True
$email.Subject = $assunto
$email.Body = $mensagem
$smtp = new-object Net.Mail.SmtpClient("envio.contoso.com.br","25")
$smtp.Credentials = new-object System.Net.NetworkCredential("outgoing@outgoing.com", "Pa$$w0rd")
$smtp.Send($email)
}
Agora tudo que temos de fazer é chamar a nossa função.
EnviaMail -Destino “chefe@contoso.com.br” -Mensagem “oi chefinho” -Assunto “Me da um aumento ai...”
Pronto, nossos scripts agora já podem enviar e-mails!
Este artigo foi originalmente escrito por:
**Matheus Kamphorst | **blog: http://howtoserver.com/