Automatizar envio de E-mail usando PowerShell
Podemos automatizar diversas tarefas usando PoweShell, inclusive enviar e-mail.
Este tutorial trata o script PowerShell e também como configurar o Gmail para permitir o envio do e-mail.
Criar script PowerShell com .NET Framework para enviar E-mail
Abra o bloco de notas, copie/cole o código e salve em: "C:\TEMP\Email_PowerShell.ps1"
$SMTPServer = "smtp.dominio.com.br"
$SMTPPort = "587"
$Username = "seuemail@dominio.com.br"
$Password = "senha"
$to = "destinatario@dominio.com.br"
$cc = "destinatariocopia@dominio.com.br"
$bcc = "destinatariocopiaoculta@dominio.com.br"
$subject = "Assunto do E-mail"
$body = "Este e-mail foi enviado automaticamente, usando PowerShell.
Att,
Sua Assinatura"
$attachment = "C:\TEMP\Email_PowerShell.ps1"
$message = New-Object System.Net.Mail.MailMessage
$message.subject = $subject
$message.from = $username
$message.to.add($to)
#$message.cc.add($cc)
#$message.cc.add($bcc)
#$message.attachments.add($attachment)
$message.body = $body
$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 "E-mail Enviado!"
Usando o SMTP do GMail
$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "seuemail@gmail.com.br"
$Password = "senha"
Quando usamos o GMail para autenticação no Outlook, Site e Apps. Sempre na primeira vez é perguntado se vamos permitir que o “Programa” em questão acesse nossa conta.
Ao concordarmos o acesso é liberado e o “Programa” faz login usando as nossas credencias.
Isso é uma segurança do Goggle.
No caso do “Programa” – Script PowerShell não existe a interface que solicita nossa permissão. Logo, quando o script tenta fazer o login para enviar o e-mail.
Aparece uma mensagem de erro / falha de autenticação:
Exception calling "Send" with "4" argument(s): "The SMTP server requires a secure connection or the client was not authenticated.The server response was: 5.5.1 Authentication Required. Learn more at"At line:15 char:1+ $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException+ FullyQualifiedErrorId : SmtpException
A solução imediata, porém menos segura, é reduzir a segurança do Google.
Configurar o GMail para permitir o Login:
a. Entre em https://myaccount.google.com/security
b. Alterar a opção Permitir aplicativos menos seguros: DESATIVADA –> ATIVADA
c. Você receberá um e-mail de segurança do Google, não precisa fazer nada é só um aviso.
Outra solução é usar a autenticação em duas etapas e ativar a senha de app de 16 dígitos.
Também podemos usar a autenticação OAuth, ambas soluções tratarei outro dia.
Executar o script PowerShell
a. Abrir o PowerShell
b. Entrar na pasta “CD C:\TEMP”
c. Executar o comando “.\Email_PowerShell.ps1”
.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
d. Executar o comando mudando a permissão, apenas no contexto desta sessão
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File "ExecPS1.ps1" -Verb RunAs
Fonte:
.NET Framework
https://technet.microsoft.com/pt-br/library/system.net.mail(v=vs.110).aspx
SMTP PowerShell using simple Authentication
http://petermorrissey.blogspot.com.br/2013/01/sending-smtp-emails-with-powershell.html
Sending e-mail with Gmail using PowerShell
https://stackoverflow.com/questions/29029364/sending-email-with-gmail-using-powershell
Windows PowerShell about_Execution_Policies