E-Mail mit Office 365 Direct Send und PowerShell senden

Wussten Sie, dass Sie Office 365 verwenden können, um E-Mails mit PowerShell zu senden? In diesem Artikel erfahren Sie, wie Sie E-Mails mit Office 365 Direct Send und dem PowerShell-Cmdlet Send-MailMessage senden.

Wenn Sie einen ausführlichen Blick auf das Senden von E-Mails mit PowerShell werfen möchten, schauen Sie sich dieses ausführliche Tutorial zu Send-MailMessage an.

Office 365 Direct Send vs. SMTP-Client-Einreichung

Bevor wir zu weit in die PowerShell eintauchen, wissen Sie, dass es nicht nur eine Möglichkeit gibt, E-Mails über Office 365 mit PowerShell zu senden. Office 365 bietet zwei unterstützte Möglichkeiten zum Senden von E-Mails. Diese Optionen sind Direct Send und SMTP-Client-Einreichung oder SMTP-authentifizierte Einreichung.

SMTP-authentifizierte Einreichung

SMTP-authentifizierte Einreichung ist am einfachsten einzurichten. Sie würden diese Option wählen, wenn Sie E-Mails von einem Gerät oder einer Anwendung an Empfänger innerhalb und außerhalb Ihrer Organisation senden möchten. Es ist keine zusätzliche Aktion in Office 365 erforderlich, um dies zu ermöglichen.

Mit dieser Option können Sie eine beliebige Absenderadresse verwenden. Die Adresse muss jedoch von einer Ihrer verifizierten akzeptierten Domänen stammen.

Um SMTP-authentifizierte Einreichung zu verwenden, müssen Sie:

  • Eine Office 365-Benutzer-Mailbox (lizenziert) haben. Diese E-Mail-Adresse wird als Absender der Nachricht angezeigt.
  • PowerShell (oder ein anderes Client-Programm) muss in der Lage sein, smtp.office365.com aufzulösen und zu erreichen.
  • Der TCP-Port 587 oder 25 muss vom Client aus für Office 365 geöffnet sein.

Direct Send

Die Komplexität wird mit der Option Direktversand etwas erhöht. Wie SMTP-authentifizierter Versand erlaubt auch der Direktversand die Verwendung einer beliebigen Absenderadresse. Auch die von-Adresse muss von einer Ihrer überprüften akzeptierten Domains stammen.

Der große Unterschied zwischen Direktversand und SMTP-authentifiziertem Versand besteht darin, dass keine externen Empfänger zugelassen sind. Wenn Sie E-Mails an Empfänger außerhalb Ihrer Organisation senden müssen, funktioniert der Direktversand nicht für Sie.

Direktversand hat einige eigene Anforderungen/Empfehlungen:

  • Diese Absenderadresse muss keine gültige Mailbox sein. Sie wird jedoch benötigt, wenn Sie NDRs oder Antworten unter Verwendung dieser Adresse erhalten möchten.
  • Der TCP-Port 25 ist von Ihrem Client zu Office 365 geöffnet.
  • Das Gerät muss in der Lage sein, die URL Ihres MX-Endpunkts aufzulösen und zu erreichen (z. B. IhreDomain-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)

Wenn Sie nicht wissen, wie Sie Ihre MX-Endpunkt-URL finden, finden Sie hier eine kurze Anleitung:

  1. Melden Sie sich im Office 365 Admin-Portal an.
  2. Klicken Sie auf Einrichten (1), wählen Sie Domänen (2), klicken Sie auf den Domainnamen (3), kopieren Sie die MX-Zeigt auf Adresse oder Wert (4).
Finding Office 365 MX Endpoint URL

SMTP-authentifizierter Versand

Die erste Methode zum Senden von E-Mails erfolgt über die SMTP-Client-Übermittlung oder den SMTP-authentifizierten Versand. Mit dem PowerShell-Befehl Send-MailMessage können wir alle Parameter bereitstellen, die wir benötigen, um E-Mails über Office 365 zu senden.

Nachfolgend finden Sie einen Code-Schnipsel, den Sie verwenden können, um E-Mails auf diese Weise zu senden.

Sie müssen zuerst ein PowerShell PScredential-Objekt definieren und dann alle Parameter bereitstellen, die von Send-MailMessage benötigt werden.

# Holen Sie sich die Anmeldeinformationen
$credential = Get-Credential

## Definieren Sie die Parameter für Send-MailMessage
$mailParams = @{
    SmtpServer                 = 'smtp.office365.com'
    Port                       = '587' # oder '25', wenn TLS nicht verwendet wird
    UseSSL                     = $true ## oder nicht, wenn kein TLS verwendet wird
    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'
}

## Senden Sie die Nachricht
Send-MailMessage @mailParams

Wenn Sie den obigen Code ausführen, sollten Sie eine E-Mail von dem internen Empfänger (ihredomain.com) und der externen Domain (nichtihredomain.com) erhalten.

Internal Email
External email

Direct Send (TLS erforderlich)

Ähnlich wie bei SMTP Authenticated Submission können Sie für Send-MailMessage nahezu dieselben Parameter verwenden. Dieses Mal werden jedoch die To-Empfänger nur intern sein.

Beachten Sie auch, dass keine PSCredential erforderlich war.

## Baue Parameter
$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'
}

## Sende die E-Mail
Send-MailMessage @mailParams
Direct Send email

Zusammenfassung

Sie sehen, dass Office 365 zwei verschiedene Optionen für das Senden von E-Mails bietet. In diesem Artikel haben wir PowerShell als Beispiel verwendet, um beide zu demonstrieren. Aber Sie müssen PowerShell nicht verwenden. Solange Ihre Anwendung oder Programmiersprache TLS-Authentifizierung unterstützt, können Sie jede Methode verwenden, die Ihnen gefällt.

Weiterführende Lektüre

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