Envoyer un e-mail avec Office 365 Direct Send et PowerShell

system: vous savez que vous pouvez utiliser office 365 pour envoyer des e-mails avec powershell? dans cet article, vous allez apprendre comment envoyer des e-mails avec office 365 direct send et la commande send-mailmessage de powershell.

si vous souhaitez une vue approfondie de l’envoi d’e-mails avec powershell, consultez ce tutoriel approfondi sur send-mailmessage.

office 365 direct send vs soumission du client smtp

avant d’aller trop loin dans powershell, sachez qu’il n’y a pas qu’une seule façon d’envoyer des e-mails via office 365 avec powershell. office 365 propose deux façons prises en charge pour envoyer des e-mails. ces options sont direct send et soumission du client smtp ou soumission authentifiée smtp.

soumission authentifiée smtp

la soumission authentifiée smtp est la plus facile à configurer. vous choisiriez cette option si vous prévoyez d’envoyer des e-mails depuis un appareil ou une application vers des destinataires à l’intérieur et à l’extérieur de votre organisation. aucune action supplémentaire n’est nécessaire dans office 365 pour permettre cela.

cette option vous permet d’utiliser n’importe quelle adresse d’expéditeur. mais l’adresse doit provenir d’un de vos domaines acceptés vérifiés.

pour utiliser la soumission authentifiée smtp, vous devez:

  • avoir une boîte aux lettres utilisateur office 365 (sous licence). cette adresse e-mail apparaîtra comme l’expéditeur du message.
  • powershell (ou un autre client) doit être capable de résoudre et d’atteindre smtp.office365.com.
  • le port tcp 587 ou 25 doit être ouvert vers office 365 depuis le client.

direct send


monter un peu la complexité est l’option envoi direct. comme la soumission authentifiée smtp, envoi direct vous permet d’utiliser n’importe quelle adresse d’expéditeur. de plus, l’adresse from doit provenir d’un de vos domaines acceptés vérifiés.

la grande différence entre envoi direct et la soumission authentifiée smtp est qu’aucun destinataire externe n’est autorisé. si vous avez besoin d’envoyer à des destinataires de messagerie en dehors de votre organisation, envoi direct ne fonctionnera pas pour vous.

envoi direct a quelques-unes de ses propres exigences/recommandations :

  • cette adresse d’expéditeur n’a pas besoin d’être une boîte aux lettres valide. mais elle est nécessaire si vous prévoyez de recevoir des ndrs ou des réponses à l’aide de cette adresse.
  • le port tcp 25 est ouvert de votre client vers office 365.
  • le périphérique doit être capable de résoudre et d’atteindre l’url de votre point d’extrémité mx (par exemple, votredomaine-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)

si vous ne savez pas comment trouver l’url de votre point d’extrémité mx, voici un tutoriel rapide :

  1. connectez-vous au portail d’administration office 365.
  2. cliquez sur configuration (1), sélectionnez domaines (2), cliquez sur le nom de domaine (3), copiez l’adresse ou la valeur mx points to (4).
Finding Office 365 MX Endpoint URL

la soumission authentifiée smtp

la première méthode pour envoyer un courrier électronique est via la soumission client smtp ou la soumission authentifiée smtp. en utilisant la cmdlet send-mailmessage de powershell, nous pouvons fournir tous les paramètres nécessaires pour envoyer un courrier électronique via office 365.

Ci-dessous un extrait que vous pouvez utiliser pour envoyer un e-mail via cette méthode.

Vous devrez d’abord définir un objet PowerShell PScredential puis fournir tous les paramètres dont Send-MailMessage a besoin.

# Obtenir le crédit
$credential = Get-Credential

## Définir les paramètres de Send-MailMessage
$mailParams = @{
    SmtpServer                 = 'smtp.office365.com'
    Port                       = '587' # ou '25' si TLS n'est pas utilisé
    UseSSL                     = $true ## ou non si TLS n'est pas utilisé
    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'
}

## Envoyer le message
Send-MailMessage @mailParams

Lorsque vous exécutez le code ci-dessus, vous devriez recevoir un e-mail reçu par le destinataire interne (votredomaine.com) et le domaine externe (nonvotredomaine.com).

Internal Email
External email

Envoi direct (TLS requis)

Similaire à l’envoi authentifié SMTP, vous pouvez utiliser presque les mêmes paramètres pour Send-MailMessage. Cependant cette fois, les destinataires du To ne seront que internes.

Notez également qu’un PSCredential n’était pas nécessaire.

## Construire les paramètres
$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'
}

## Envoyer l'e-mail
Send-MailMessage @mailParams
Direct Send email

Résumé

Vous pouvez voir qu’Office 365 propose deux options différentes pour l’envoi d’e-mails. Dans cet article, nous avons utilisé PowerShell comme exemple pour les démontrer tous les deux. Mais vous n’êtes pas obligé d’utiliser PowerShell. Tant que votre application ou langage de programmation prend en charge l’authentification TLS, vous pouvez utiliser la méthode de votre choix.

Lecture complémentaire

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