Script BAT e PowerShell para envio de e-mail


Introdução
Durante uma necessidade de receber notificações por e-mails e automatizando para diversas possibilidades, podemos criar um script bat junto com Powershell para envio via servidor SMTP Gmail.
O cenário

Você  é um profissional que precisa monitorar algum processo ou disponibilidade de hosts ,links ou serviços e precisa acompanhar em tempo real por e-mail.


A solução

Nesse projeto precisaremos as seguintes ferramentas:

Script .bat   (Para executar o script Powershell)
Script .ps1  (Para enviar e-mail)
Uma conta Google para Gmail. (Servidor SMTP para transmissão)

Glossário técnico



Script bat
@echo off

:: Script BAT para executar o powershell
powershell.exe -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file "SendEmail.ps1"



Script PowerShell
$Date = Get-Date -Format F  #Criando variavel data para adicionar no campo assunto
$imgfile = “.\travel_indis.png”
#CONFIGURAÇÃO SERVIDOR SMTP
$SMTPServer = “smtp.gmail.com”
$SMTPPort = “587”
$Username = “digite seu e-mail gmail”
$Password = “digite sua senha”
$smtp.EnableSsl = $true                                         #Habilitando protocolo SSL

#CONFIGURAÇÃO DA MENSAGEM
$to = “digite o e-mail para envio”
$cc = “digite o endereço para envio da cópia da mensagem”
$subject = “Teste envio PowerShell [$Date]”  #Assunto da mensagem do e-mail
$body = @”
<html>
<body>
<img src="cid:image1.png">
</body>
</html>
“@

$attachment = New-Object System.Net.Mail.Attachment($imgfile)
$attachment.ContentDisposition.Inline = $True
$attachment.ContentDisposition.DispositionType = “Inline”
$attachment.ContentType.MediaType = “image/png”
$attachment.ContentId = ‘image1.png’

$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.IsBodyHtml = $True

$message.body = $body
$message.to.add($to)
$message.cc.add($cc)
$message.from = $username
$message.attachments.add($attachment)

$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
$smtp.EnableSSL = $true
$smtp.Credentials = New-Object System.Net.NetworkCredential($Username,$Password);

$smtp.send($message)
write-host “Mail Sent”

$attachment.Dispose();
$message.Dispose();


Comentário