Arquivo

Archive for the ‘PowerShell’ Category

Automatizar envio de E-mail usando PowerShell

29 de agosto de 2017 1 comentário

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.

psEmail003

 

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.

psEmail006

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

 

psEmail003

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

https://technet.microsoft.com/pt-BR/library/hh847748.aspx