現代のユーザーは、新しいメールが届くと即座に通知が表示されることを期待しています。4D 21 R3では、IMAP IDLE通知のサポートが導入され、アプリケーション内でリアルタイムにメールの受信状況を把握できるようになりました。定期的な同期だけに頼るのではなく、メールボックスに変化があった際に即座に対応できるようになりました。
IMAPTransporterのIMAP IDLEサポートにより、4Dアプリケーションはメールボックスの通知に対してsubscribe (イベント処理)を行うことができます。「何か変更があったか?」と問い合わせる代わりに、サーバーから「何かが変更されました」と通知されます。これは新しいメッセージだけでなく、以下の状況にも対応可能です:
- 新しいメールの作成
- メッセージの削除
- フラグの変更
- メールボックス状態の変更
メール通知をサポートするため、4DのIMAP機能を拡張し、IMAP New transporter コマンドに新しいlistener パラメータを追加しました。この新しいlistener オブジェクトにより、開発者はコールバック関数を登録できるようになります。
サポートされる通知イベント
parameter.listenerオブジェクトは、以下のコールバックをサポートしています:
- listener.onMailCreated(): 現在のメールボックスで新しいメッセージが検出されたときにトリガーされます。
- listener.onMailDeleted(): メッセージが完全に削除されたときにトリガーされます。
- listener.onFlagsModified(): メッセージのフラグが変更されたとき(たとえば、メッセージが既読としてマークされたとき)にトリガーされます。
開始/終了通知
4D.IMAPTransporter オブジェクトは、ライフサイクル制御メソッドを持つnotifierプロパティを公開しています:
- notifier.start(): サーバー通知を購読し、IMAP 通知機能を有効にします。
- notifier.stop(): サーバーへのサブスクリプションと IMAP 通知機能を停止します。
たとえば、メールリスナーを一元的に管理するクラスを実装できます:
// Class IMAPListener
// Triggered when a new email is created on the server
Function onMailCreated($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("You have a new mail!")
// Triggered when an email is deleted
Function onMailDeleted($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("Message deleted")
// Triggered when message flags change (e.g., read/unread)
Function onFlagsModified($transporter : 4D.IMAPTransporter; $event : Object)
ALERT("Flag modified")
そして、コード内で必要になったときに通知機能を起動できます:
var $parameter:={}
$parameter.authenticationMode:=IMAP authentication OAUTH2 // Using OAuth2 for authentication
$parameter.host:="Outlook.office365.com" // IMAP server host
$parameter.port:=993 // IMAP SSL port
$parameter.accessTokenOAuth2 := $myToken // Token received from the OAuth server
$parameter.user:="myadress@email.com" // User email address
// Listener Intialization
$parameter.listener :=cs.IMAPListener.new()
var $myTransporter:=IMAP New transporter($parameter)
// Start the notifier
$myTransporter.notifier.start()
まとめ
IMAP NewトランスポーターにIMAP IDLE通知が統合されたことで、4Dアプリケーションはメール同期においてリアルタイムかつイベント駆動型のアプローチを採用できるようになりました。ユーザーはすでにメッセージングツールからの即時更新を期待しており、この機能強化により、4Dソリューションでも同様のシームレスな体験を提供できるようになります。
現在、この投稿へのコメント機能は利用できません。