Pro přístup k datům ve službě Microsoft 365, jako jsou e-maily, společnost Microsoft ruší základní ověřování pro protokoly IMAP a POP3 a stále více podporuje rozhraní Graph API.
4D v19 R3 přinesl komponentu 4D Netkit, která spravuje připojení OAuth 2.0 a odesílání pošty prostřednictvím Graph API.
Ve verzi v19 R8 přidáváme nové příkazy pro příjem e-mailů a výpis složek poštovní schránky.
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"))
Poštovní složky
Kolekci poštovních složek můžete získat přímo pod kořenovou složkou pomocí funkce .getFolderList():
$folderList:=$office365.mail.getFolderList()
// Collection with all the mail folder directly under the root folder
$folders:=$folderList.folders
Získáte kolekci, která pro každou složku obsahuje užitečné informace, jako je název složky, id, počet e-mailů a tak :
Pokud máte některé složky s podřízenými složkami, musíte zavolat funkci .getFolderList() s použitím id složky jako parametru, abyste získali podrobnosti o složkách:
$childrenList:=$office365.mail.getFolderList($folders[8].id)
Stáhnout e-maily
E-maily z vaší poštovní schránky můžete získat pomocí funkce .getMails(). Pokud například chcete načíst všechny e-maily přítomné ve složce Doručená pošta:
$param:=New object
$param.folderId:=$folder[1].id // inbox folder
$mails:=$office365.mail.getMails($param)
Pokud je vybraná složka složkou vytvořenou ve výchozím nastavení pro uživatele, můžete místo odpovídající hodnoty id složky pro usnadnění použít známé názvy složek (archiv, návrhy, doručená pošta, nevyžádaná pošta, odeslané položky a tak dále… ). Můžete tedy napsat níže uvedený příklad:
$param:=New object
$param.folderId:="inbox"
$mails:=$office365.mail.getMails($param)
Pokud potřebujete stáhnout pouze konkrétní e-mail, můžete použít funkci .getMail() a předat jí id e-mailu:
$mail:=$office.mail.getMail($mailId)
Podívejte se na tuto funkci s výše uvedeným HDI a na dokumentaci, kde najdete další podrobnosti!