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 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();
0 comentários:
Postar um comentário