Dopo che il cmdlet Send-MailMessage è diventato obsoleto, perché non garantiva più una comunicazione sicura con i server di posta, stavo cercando un modo, semplice, per inviare una email utilizzando PowerShell, finalmente ho trovato PoshMailKit di poshcodebear disponibile su GitHub. Nel titolo dell’articolo ho scritto “Gmail (e non solo)” perché lo script si dovrebbe (non posso garantirlo) poter adattare a qualsiasi server di posta SMTP di cui abbiate utenza, password e conosciate la porta utilizzata dal server SMTP. Con Libero e Gmail, quelli che avevo per provare, l’invio della posta ha funzionato.

Funzionamento

Per prima cosa bisogna installare il modulo PoshMailKit tramite il comando:

  • Install-Module -Name PoshMailKit

e si risponde Y quando richiesto.

Come usare PowerShell inviare mail Gmail ( non solo)

Per verificare che il modulo sia ora installato si può usare il commando:

  • Get-Module -ListAvailable -Name PoshMailKit

Come usare PowerShell inviare mail Gmail ( non solo)

Per utilizzare PowerShell con Gmail bisogna creare una password, che non sarà quella del vostro normale account di posta, per l’app PowerShell. Si accede all’account di Gmail e poi si sceglie Gestisci il tuo account Google.

Come usare PowerShell inviare mail Gmail ( non solo)

Ora si cerca “Password per le app”.

Come usare PowerShell inviare mail Gmail ( non solo)

Arrivati a questo punto si crea l’app PowerShell.

Come usare PowerShell inviare mail Gmail ( non solo)

Subito dopo viene generata una password di sedici caratteri, gli spazi non servono, che andrà utilizzata nello script per dare accesso al server di posta e spedire la mail.

Come usare PowerShell inviare mail Gmail ( non solo)

I comandi per inviare la mail sono quelli che vedete di seguito, vanno ovviamente inseriti gli indirizzi del mittente e del destinatario, il titolo e l’oggetto dell’email, i dati del server di posta, la riga “$Credential = Get-Credential“ ferma l’esecuzione dello script per permettere l’inserimento di utenza e password per accedere al server SMTP.

  • #Configurare l’email
  • $From = "IndirizzoGmail@gmail.com"
  • $To = "Destinatario@dominio.com"
  • $Subject = "Test TurboLab.it invio email"
  • $Body = "Mail di test per verifica funzionamento modulo PoshMailKit."
  • #Definire indirizzo e numero di porta del server SMTP
  • $SMTPServer = "smtp.gmail.com"
  • $SMTPPort = 587
  • $Credential = Get-Credential
  • # Comando invio email
  • Send-MKMailMessage -From $From -To $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -Credential $Credential -UseSsl

In questo secondo formato dello script, si possono inserire utenza e password nello script, così da far partire direttamente il messaggio di posta.

  • #Configurare l’email
  • $From = "IndirizzoGmail@gmail.com"
  • $To = "Destinatario@dominio.com"
  • $Subject = "Test TurboLab.it invio email"
  • $Body = "Mail di test per verifica funzionamento modulo PoshMailKit."
  • #Definire indirizzo e numero di porta del server SMTP
  • $SMTPServer = "smtp.gmail.com" $SMTPPort = 587
  • #Di solito lo username è il vostro indirizzo di posta
  • $username = NomeAccount@gmail.com
  • #Al posto delle X va messa la password generata dall’account Gmail in precedenza
  • $password = ConvertTo-SecureString "XXXXXXXXXXXXXXXX" -AsPlainText -Force
  • $Credential = New-Object System.Management.Automation.PSCredential -ArgumentList ($username, $password)
  • #Comando invio email
  • Send-MKMailMessage -From $From -To $To -Subject $Subject -Body $Body -SmtpServer $SMTPServer -Port $SMTPPort -Credential $Credential -UseSsl

Utilizzando i comandi appena visti posso inviarmi una mail, magari come report finale dell’esecuzione di uno script lanciato su un computer così da essere avvisato che è terminato.

Come usare PowerShell inviare mail Gmail ( non solo)