Microsoft 365: Odesílání e-mailů

Automaticky přeloženo z Deepl

Víme, jak je odesílání e-mailů důležité a že se jedná o běžnou úlohu v dnešních aplikacích. Mnoho lidí pracujících se službou Office 365 nás požádalo o rozhraní API pro odesílání e-mailů prostřednictvím rozhraní Microsoft Graph API. Funkce OAuth 2.0 byla předpokladem pro připojení k serveru Microsoft a pro zavedení příkazů pro načítání informací o uživatelích. Jsme rádi, že můžeme pokračovat ve správě e-mailů, počínaje příkazem odeslat e-mail.

HDI Office365 Odeslat poštu

Připojení k účtu

Před vytvořením e-mailu vytvoříme objekt připojení OAuth2 a objekt Office 365.

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"))

PŘIPRAVTE e-mail

Nejprve je třeba vytvořit objekt e-mailu. Systém 4D nyní podporuje typ prostředku zprávy Microsoft Graph. Příklady kódu v tomto příspěvku a HDI jsou provedeny s tímto novým objektem. Pokud však dáváte přednost, můžete samozřejmě použít poštovní objekt s formátem JMAP.

Začněme zadáním autora e-mailu. Autorem musí být e-mailová adresa připojeného uživatele, takže k automatickému vyplnění tohoto atributu použijeme $office365.user.getCurrent():

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

Pokud chcete zadat jinou adresu pro zaslání odpovědi než adresu

Pak adresáty (s použitím různých syntaxí):

$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)

Dále přidáme předmět:

$email.subject:="Hello world"

A tělo … Můžete zadat dva typy, text:

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

nebo HTML:

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

Do e-mailu můžete přidat další informace, jako např:

  • žádost o potvrzení o doručení:
$email.isDeliveryReceiptRequested:=True
  • žádost o potvrzení o přečtení:
$email.isReadReceiptRequested:=True
  • „nízká“, „normální“ nebo „důležitá“ důležitost:
$email.importance:="high"

a další, které najdete v dokumentaci!

Vytvoření přílohy

Chcete-li přidat přílohu, musíte vytvořit objekt přílohy:

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)

A přidejte jej do e-mailu takto:

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

Odeslat e-mail

Nyní, když je e-mail připraven, můžeme jej odeslat pomocí funkce mail.send() objektu $office365, který jsme vytvořili dříve:

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

A tak je váš e-mail odeslán!

Podívejte se na tuto funkci v akci pomocí výše uvedeného HDI a dokumentace, kde najdete další podrobnosti!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se připojil k týmu 4D Program v listopadu 2016. Jako Product Owner má na starosti psaní uživatelských příběhů, které následně převádí do funkčních specifikací. Jeho úkolem je také zajistit, aby dodaná implementace funkcí splňovala potřeby zákazníků.Po získání bakalářského titulu v oboru informatiky na CNAM nastoupil Fabrice do malé softwarové vydavatelské společnosti jako vývojář Windev. Poté pracoval pro různé společnosti v oblasti průmyslu a obchodu jako vývojář aplikací Windev a webových aplikací a také jako technický poradce pro nové funkce.