Microsoft 365: Emails senden

Wir wissen, wie wichtig das Versenden von E-Mails ist und dass dies eine häufige Aufgabe in den heutigen Anwendungen ist. Viele Leute, die mit Office 365 arbeiten, haben uns nach einer API gefragt, um E-Mails über die Microsoft Graph API zu versenden. Die OAuth 2.0-Funktion war eine Voraussetzung für die Verbindung mit dem Microsoft-Server und für die Einführung von Befehlen zum Abrufen von Benutzerinformationen. Wir freuen uns, mit der E-Mail-Verwaltung fortzufahren, beginnend mit dem Befehl „Send Mail“.

HDI Office365 E-Mail senden

Verbindung zum Konto

Bevor wir die E-Mail erstellen, werden wir das OAuth2-Verbindungsobjekt und das Office 365-Objekt erstellen.

var $oAuth2: cs.NetKit.OAuth2Provider
var $office365 : cs.NetKit.Office365

$oAuth2:=cs.NetKit.OAuth2Provider.new($param)
$office365:=cs.NetKit.Office365.new($oAuth2;\
 New object("mailType"; "Microsoft"))

VORBEREITEN einer E-Mail

Zuerst müssen Sie Ihr E-Mail-Objekt erstellen. 4D unterstützt jetzt den Message Resource Type von Microsoft Graph. Die Codebeispiele in diesem Beitrag und der HDI werden mit diesem neuen Objekt erstellt. Aber natürlich können Sie auch ein Mail-Objekt mit JMAP-Format verwenden, wenn Sie dies bevorzugen.

Beginnen wir mit der Angabe des Autors der E-Mail. Der Autor muss die E-Mail-Adresse des verbundenen Benutzers sein, daher verwenden wir $office365.user.getCurrent(), um dieses Attribut automatisch zu füllen:

$email:=New object
$email.from:=New object
$email.from.emailAddress:=New object
$email.from.emailAddress.address:=$office365.user.getCurrent().userPrincipalName

Wenn Sie eine Antwortadresse angeben möchten, die sich von der Adresse

Dann die Empfänger (mit unterschiedlichen Syntaxen):

$addressTo:=New object
$addressTo.emailAddress:=New object
$addressTo.emailAddress.email:="address1@mail.com"

$addressCC:=New object
$addressCC.emailAddress:=New object
$addressCC.emailAddress.email:="address2@mail.com"
$addressCC.emailAddress.name:="Stephen"

// Originating addresses
$email.toRecipients:=new collection($addressTo)
// Carbon Copy
$email.ccRecipients:=new collection($addressCC)

Als nächstes fügen wir einen Betreff hinzu:

$email.subject:="Hello world"

Und der Textkörper … Sie können zwei Typen angeben, einen Text:

$email.body:=New object
$email.body.content:="Test content mail"
$email.body.contentType:="text"

oder HTML:

$email.body:=New object
$email.body.content:="<html><body><h1>Test content mail </h1></body></html>"
$email.body.contentType:="html"

Sie können Ihrer E-Mail zusätzliche Informationen hinzufügen, z. B:

  • eine Anfrage für eine Empfangsbestätigung:
$email.isDeliveryReceiptRequested:=True
  • eine Anforderung für eine Lesebestätigung:
$email.isReadReceiptRequested:=True
  • eine „geringe“, „normale“ oder „wichtige“ Wichtigkeit:
$email.importance:="high"

und andere, die Sie in der Dokumentation finden!

Eine Anlage erstellen

Um einen Anhang hinzuzufügen, müssen Sie ein Anhangsobjekt erstellen:

var $attachmentText : Text
$attachmentText:="Simple text attachement content"

var $attachment : Object
BASE64 ENCODE($attachmentText)
$attachment:=New object
$attachment["@odata.type"]:="#microsoft.graph.fileAttachment"
$attachment.contentId:=Generate UUID
$attachment.isInline:=False
$attachment.name:="attachment.txt"
$attachment.contentType:="text/plain"
$attachment.contentBytes:=$attachmentText
$attachment.size:=Length($attachmentText)

Fügen Sie es wie folgt zu Ihrer E-Mail hinzu:

$email.attachments:=New collection($attachment)

E-Mail senden

Jetzt, wo die E-Mail fertig ist, können wir sie mit der Funktion mail.send() des zuvor erstellten $office365-Objekts versenden:

$status:=$office365.mail.send($email)

Und schon ist Ihre E-Mail verschickt!

Schauen Sie sich diese Funktion in Aktion mit dem HDI oben und die Dokumentation für weitere Details!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené gehört seit November 2016 zum 4D Program Team. Als Product Owner ist er verantwortlich für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen. Seine Aufgabe ist es auch, sicherzustellen, dass die gelieferte Funktionsimplementierung den Kundenanforderungen entspricht.Nach seinem Bachelor-Abschluss in Informatik am CNAM arbeitete Fabrice als Windev-Entwickler bei einem kleinen Software-Verlag. Danach arbeitete er für verschiedene Unternehmen in Industrie und Handel als Windev- und Webentwickler sowie als technischer Berater für neue Funktionen.