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!