Microsoft 365: Microsoft Graph API でメールを受信する

Microsoft 365 の、メールなどのデータにアクセスする方法として、Microsoft は IMAP と POP3 の Basic認証を廃止とし、Graph API の使用を推進しています。

4D v19 R3 では、OAuth 2.0 接続と Graph API によるメール送信を管理するために 4D Netkit コンポーネントを導入しました。

v19 R8 では、メールの受信 メールボックスフォルダーを一覧表示 するための 新しいコマンド を追加しています。

HDI Office365: メールの受信

アカウント接続

まず初めに、OAuth2 接続用のオブジェクトと 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"))

メールフォルダー

.getFolderList() 関数を使用することで、ルートフォルダー直下のメールフォルダーのコレクションを取得することができます:

$folderList:=$office365.mail.getFolderList()
// ルートフォルダー直下のメールフォルダーのコレクション
$folders:=$folderList.folders

このコレクションには、各フォルダーについて、フォルダー名、ID、メール数といった有用な情報が格納されています:

子フォルダーを持つフォルダーがある場合には、親フォルダーID を引数として .getFolderList() 関数を呼び出すと、子フォルダーの情報が取得できます:

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

電子メールをダウンロードする

メールボックスのメールを取得するには、.getMails() 関数を使用します。たとえば、Inboxフォルダーのメールをすべて取得したい場合:

$param:=New object
$param.folderId:=$folder[1].id  // Inboxフォルダー

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

選択したフォルダーが、デフォルトで用意されているようなフォルダーである場合、対応するフォルダーID値を使用する代わりに、既知のフォルダー名 (archive、drafts、inbox、junkemail、sentitems、など) を使用することができます。たとえば、以下の例のように書くことができます:

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

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

特定のメールだけをダウンロードしたい場合は、.getMail() 関数を使い、メールの ID を渡します:

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

この機能については、上記の HDI とドキュメントで詳細を確認してください。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。