Per accedere ai dati di Microsoft 365, come le e-mail, Microsoft sta deprecando l’autenticazione di base per IMAP e POP3 e promuove sempre più l’API Graph.
4D v19 R3 ha introdotto il componente 4D Netkit per gestire la connessione OAuth 2.0 e l’invio di posta elettronica tramite Graph API.
Nella v19 R8 sono stati aggiunti nuovi comandi per ricevere le e-mail ed elencare le cartelle della casella di posta elettronica.
Connessione all’account
Prima di creare l’e-mail, creeremo l’oggetto di connessione OAuth2 e l’oggetto 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"))
Cartelle di posta
È possibile ottenere la raccolta di cartelle di posta direttamente sotto la cartella principale, utilizzando la funzione .getFolderList():
$folderList:=$office365.mail.getFolderList()
// Collection with all the mail folder directly under the root folder
$folders:=$folderList.folders
Si ottiene una raccolta che contiene, per ogni cartella, informazioni utili come il nome della cartella, l’id, il numero di e-mail e così via:
Se si hanno cartelle con figli, è necessario richiamare la funzione .getFolderList() utilizzando l’id della cartella come parametro per avere i dettagli delle cartelle:
$childrenList:=$office365.mail.getFolderList($folders[8].id)
Scaricare le e-mail
È possibile ottenere le e-mail della propria casella di posta elettronica utilizzando la funzione .getMails(). Ad esempio, se si desidera recuperare tutti i messaggi di posta elettronica presenti nella cartella Posta in arrivo:
$param:=New object
$param.folderId:=$folder[1].id // inbox folder
$mails:=$office365.mail.getMails($param)
Quando la cartella selezionata è una cartella creata di default per gli utenti, invece di usare il valore id della cartella corrispondente, per comodità si possono usare i nomi noti delle cartelle (archivio, bozze, posta in arrivo, posta indesiderata, messaggi inviati e così via… ). Si può quindi scrivere l’esempio seguente:
$param:=New object
$param.folderId:="inbox"
$mails:=$office365.mail.getMails($param)
Se si desidera scaricare solo un’e-mail specifica, è possibile utilizzare la funzione .getMail() e passarle l’id dell’e-mail:
$mail:=$office.mail.getMail($mailId)
Per maggiori dettagli, verificare questa funzione con l’HDI di cui sopra e la documentazione!