Microsoft 365: Receber e-mails com o Microsoft Graph API

Para acessar aos dados no Microsoft 365 como os e-mails, a Microsoft está a depreciar a autenticação básica para IMAP e POP3 e está a promover cada vez mais a API gráfica.

4D v19 R3 trouxe o componente 4D Netkit para gerir a ligação OAuth 2.0 e o envio de correio através do Graph API.

No v19 R8, adicionamos novos comandos para receber emails e listamos as pastas da sua caixa de correio.

HDI Office365 Obter Correio Electrónico

Ligação de conta

Antes de criar o e-mail, iremos criar o objeto de ligação OAuth2 e o 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"))

Pastas de correio

Pode obter a coleção de pastas de correio diretamente por baixo da pasta raiz, utilizando a função .getFolderList():

$folderList:=$office365.mail.getFolderList()
// Coleção com todas as pastas de email diretamente abaixo da pasta raiz
$folders:=$folderList.folders

Obtém uma coleção que contém, para cada pasta, informações úteis tais como o nome da pasta, id, número de emails, e assim por diante:

Se tiver algumas pastas com pastas de crianças, precisa chamar a função .getFolderList() utilizando o id da pasta como parâmetro para ter os detalhes das pastas:

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

Descarregar mensagens de correio elerônico

Pode obter as mensagens da sua caixa de correio utilizando a função .getMails(). Por exemplo, se quiser recuperar todos os mails presentes na pasta Inbox:

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

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

Quando a pasta selecionada é uma pasta criada por defeito para os utilizadores, em vez de utilizar o valor de id da pasta correspondente, por conveniência, pode utilizar os nomes de pastas bem conhecidos (arquivo, rascunhos, inbox, junkemail, sentitems, e assim por diante… ). Por isso, pode escrever o exemplo abaixo:

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

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

Se precisar apenas baixar um e-mail específico, pode utilizar a função .getMail() e passar-lhe o id do e-mail:

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

Consulte esta função com o HDI acima e a documentação para mais detalhes!

Fabrice Mainguené
- Proprietário do produto ->p>Fabrice Mainguené juntou-se à equipa do Programa 4D em Novembro, 2016. Como Proprietário do Produto, está encarregado de escrever as histórias dos utilizadores, traduzindo-as depois para especificações funcionais. O seu papel é também o de assegurar que a implementação da funcionalidade entregue vai ao encontro das necessidades do cliente.Após a obtenção da licenciatura em Informática no CNAM, Fabrice juntou-se a uma pequena empresa editora de software como programador Windev. Depois trabalhou para diferentes empresas nas áreas da indústria e comércio como programador Windev e web developer, bem como como consultor técnico sobre novas funcionalidades.