Invia email con Office 365 Direct Send e PowerShell

Sapevi che puoi usare Office 365 per inviare email con PowerShell? In questo articolo, imparerai come inviare email con Office 365 Direct Send e il cmdlet Send-MailMessage di PowerShell.

Se desideri una panoramica approfondita sull’invio di email con PowerShell, consulta questo tutorial approfondito su Send-MailMessage.

Office 365 Direct Send vs. SMTP Client Submission

Prima di addentrarci troppo in PowerShell, sappi che non c’è solo un modo per inviare email tramite Office 365 usando PowerShell. Office 365 offre due modi supportati per inviare email. Queste opzioni sono Direct Send e SMTP Client Submission o SMTP Authenticated Submission.

SMTP Authenticated Submission

SMTP Authenticated Submission è il più semplice da configurare. Sceglieresti questa opzione se prevedi di inviare email da un dispositivo o da un’applicazione a destinatari all’interno e all’esterno della tua organizzazione. Non è necessaria alcuna azione aggiuntiva in Office 365 per consentirlo.

Questa opzione ti consente di utilizzare qualsiasi indirizzo del mittente. Tuttavia, l’indirizzo deve provenire da uno dei tuoi domini accettati verificati.

Per utilizzare SMTP Authenticated Submission, devi:

  • Avere una casella di posta dell’utente di Office 365 (licenziata). Questo indirizzo email apparirà come mittente del messaggio.
  • PowerShell (o un altro client) deve essere in grado di risolvere e raggiungere smtp.office365.com.
  • La porta TCP 587 o 25 deve essere aperta verso Office 365 dal client.

Direct Send

Aumentare leggermente la complessità è l’opzione Invio diretto. Come Invio autenticato SMTP, Invio diretto ti consente di utilizzare qualsiasi indirizzo mittente. Inoltre, l’indirizzo from deve provenire da uno dei tuoi domini accettati verificati.

La grande differenza tra Invio diretto e Invio autenticato SMTP è che non sono consentiti destinatari esterni. Se devi inviare email a destinatari esterni alla tua organizzazione, Invio diretto non funzionerà per te.

Invio diretto ha alcuni requisiti / raccomandazioni propri:

  • Questo indirizzo mittente non deve necessariamente essere una casella di posta valida. Ma è necessario se prevedi di ricevere NDR o risposte utilizzando questo indirizzo.
  • La porta TCP 25 è aperta dal tuo client a Office 365.
  • Il dispositivo deve essere in grado di risolvere e raggiungere l’URL del tuo endpoint MX (ad es. yourdomain-com.mail.protection.outlook.com)
  • A static public IP address. This is to update your SPF record and avoid your messages getting flagged as spam (optional but recommended)

Se non sai come trovare l’URL del tuo endpoint MX, ecco un breve tutorial:

  1. Accedi al Portale di amministrazione di Office 365.
  2. Fai clic su Configurazione (1), seleziona Domini (2), fai clic sul Nome del dominio (3), copia l’indirizzo MX Punta all’indirizzo o valore (4).
Finding Office 365 MX Endpoint URL

Invio autenticato SMTP

Il primo metodo per inviare email è tramite la Sottomissione del client SMTP o l’Invio autenticato SMTP. Utilizzando il cmdlet Send-MailMessage di PowerShell, possiamo fornire tutti i parametri necessari per inviare email tramite Office 365.

Ecco un estratto che puoi utilizzare per inviare email tramite questo metodo.

Sarà necessario prima definire un oggetto PowerShell PScredential e fornire tutti i parametri necessari a Send-MailMessage.

# Ottieni le credenziali
$credential = Get-Credential

## Definisci i parametri di Send-MailMessage
$mailParams = @{
    SmtpServer                 = 'smtp.office365.com'
    Port                       = '587' # o '25' se non si utilizza TLS
    UseSSL                     = $true ## o non utilizzarla se si utilizza non-TLS
    Credential                 = $credential
    From                       = '[email protected]'
    To                         = '[email protected]', '[email protected]'
    Subject                    = "SMTP Client Submission - $(Get-Date -Format g)"
    Body                       = 'This is a test email using SMTP Client Submission'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## Invia il messaggio
Send-MailMessage @mailParams

Quando esegui il codice sopra, dovresti ricevere un’email ricevuta dal destinatario interno (yourdomain.com) e dal dominio esterno (notyourdomain.com).

Internal Email
External email

Invio diretto (TLS richiesto)

Simile alla Submission autenticata SMTP, puoi utilizzare quasi gli stessi parametri per Send-MailMessage. Tuttavia, questa volta, i destinatari To saranno solo interni.

Nota anche che non è necessario un PSCredential.

## Costruisci i parametri
$mailParams = @{
    SmtpServer                 = '<tenant>.mail.protection.outlook.com'
    Port                       = '25'
    UseSSL                     = $true   
    From                       = '[email protected]'
    To                         = '[email protected]'
    Subject                    = "Direct Send $(Get-Date -Format g)"
    Body                       = 'This is a test email using Direct Send'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## Invia l'email
Send-MailMessage @mailParams
Direct Send email

Riepilogo

Puoi vedere che Office 365 fornisce due opzioni diverse per l’invio di email. In questo articolo, abbiamo utilizzato PowerShell come esempio per dimostrarlo. Tuttavia, non è necessario utilizzare PowerShell. Finché la tua applicazione o linguaggio di programmazione supporta l’autenticazione TLS, puoi utilizzare qualsiasi metodo preferisci.

Ulteriori Letture

Source:
https://adamtheautomator.com/office-365-direct-send/