Microsoft 365: Recibir correos electrónicos con la API Microsoft Graph

Para acceder a los datos de Microsoft 365 como correos electrónicos, Microsoft está dejando atrás la autenticación básica para IMAP y POP3 y está promoviendo cada vez más la API Graph.

4D v19 R3 trajo el componente 4D Netkit para gestionar la conexión OAuth 2.0 y el envío de correos a través de la API Graph.

En la v19 R8, agregamos nuevos comandos para recibir correos y listar las carpetas de su buzón.

HDI Office365 Get Mails

Conexión a la cuenta

Antes de crear el correo, crearemos el objeto de conexión OAuth2 y el objeto 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"))

Carpetas de correo

Puede obtener la colección de carpetas de correo directamente bajo la carpeta raíz utilizando la función .getFolderList():

$folderList:=$office365.mail.getFolderList()
// Collection with all the mail folder directly under the root folder
$folders:=$folderList.folders

Obtendrá una colección que contiene, para cada carpeta, información útil como el nombre de la carpeta, id, número de emails, etc.:

Si tiene algunas carpetas con carpetas hijas, debe llamar a la función .getFolderList() utilizando el id de la carpeta como parámetro para tener los detalles de las carpetas:

$childrenList:=$office365.mail.getFolderList($folders[8].id)

Descargar emails

Puede recuperar los correos de su buzón utilizando la función .getMails(). Por ejemplo, si desea recuperar todos los correos presentes en la carpeta Bandeja de entrada:

$param:=New object
$param.folderId:=$folder[1].id  // inbox folder

$mails:=$office365.mail.getMails($param)

Cuando la carpeta seleccionada es una carpeta creada por defecto para los usuarios, en lugar de utilizar el valor de id de la carpeta correspondiente, por comodidad, puede utilizar los nombres de carpeta conocidos (archive, drafts, inbox, junkemail, sentitems, etc…). Así que puede escribir el ejemplo siguiente:

$param:=New object 
$param.folderId:="inbox"

$mails:=$office365.mail.getMails($param)

Si sólo necesita descargar un email específico, puedes utilizar la función .getMail() y pasarle el id del email:

$mail:=$office.mail.getMail($mailId)

De un vistazo a esta funcionalidad con el IDH de arriba y la documentación para más detalles.

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.