4D Internet Commands v16

IMAP4 コマンド - 概要

ホーム

 
4D Internet Commands v16
IMAP4 コマンド - 概要

IMAP4 コマンド - 概要  


 

 

IMAPコマンドを使用してIMAPメールサーバと通信し、メッセージを処理することができます。IMAPコマンドはRFC2060で示されたInternet Message Access Protocol, Version 4 revision 1 (IMAP4rev1) と互換があります。IMAP4 rev1は、メールボックスと呼ばれるリモートのメッセージフォルダを、ローカルのメールボックスと同様に管理できるようにします。

IMAPコマンドを使用してメールボックスの作成、削除名称変更などの操作、新着メッセージのチェック、メッセージの削除、メッセージフラグの設定やクリア、メッセージの検索、選択したメッセージの受信などができます。

用語  

"接続"はネットワークの接続開始 (IMAP_Login) から接続終了 (IMAP_Logout) までの、IMAPクライアント/サーバの一連のシーケンスを指します。

"セッション"はメールボックスが選択 (IMAP_SetCurrentMB) されてから、選択終了 (IMAP_SetCurrentMB, IMAP_CloseCurrentMB) または接続の終了 (IMAP_Logout) までの、クライアント/サーバの一連のシーケンスを指します。

  • TCP接続の初期化 (必要に応じて): IT_MacTCPInit (PPP接続の場合、IT_PPPConnectコマンドをIT_MacTCPInitよりも前に呼び出さなければなりません)。
  • 接続を開く: IMAP_Login
  • メールボックスの管理: リスト, 作成, 削除, 名称変更, 購読/購読解除, ステータスの取得など。
  • メールボックスを指定してセッションを開く: IMAP_SetCurrentMB。カレントのメールボックスを設定した後、メッセージを管理できます。
  • メッセージの管理: リスト, メッセージのダウンロードや削除、メッセージフラグのリストや更新、他のメールボックスへのコピー、(ダウンロードをしない) メッセージの検索や受信など。
  • カレントのメールボックスメッセージの操作が終了したら、セッションを閉じるか、他のメールボックスをカレントのメールボックスにできます。いずれの場合も、IMAPサーバは恒久的にメッセージを更新します。例えば、削除フラグが設定されたメッセージを削除します。
  • すべての操作が終了したらログアウトします。接続を閉じる: IMAP_Logout
  • 他の操作: 環境設定、接続のチェック、IMAPサーバ上の自動切断タイマーのリセット

IMAP関連のコマンドは二つのセクションIC IMAP メール閲覧IC ダウンロードしたメールに分けられます。この分離はメールを読み込む異なる方法を表しています。IMAPサーバからメールを読みだす際、メッセージ (またはメッセージに関する情報) は (変数, フィールド, 配列など) 4Dのオブジェクトに格納されるか、ディスクにダウンロードされます。このセクションでは、4D Internet Commandsを使用してIMAPサーバからメッセージを読み込む能力について説明します。

メッセージの受信に二つの方法が用意されている理由は、大きな情報をダウンロードするかもしれない場合のメモリの制限のためです。例えば5MBの添付ファイルがあるメッセージは容易にデータベースの格納容量をオーバーフローさせます。4Dオブジェクトでこのサイズを格納できるのはピクチャや Blobです。しかしメッセージや添付ファイルをこれらのオブジェクトに変換するのは大きなメモリ空間が必要なため、効率的ではありません。これを解決するために、このセクションにはIMAP_Downloadコマンドが用意され、IMAPサーバからメッセージをローカルディスクにダウンロードできるようになっています。

ディスクに保存された後は、IC ダウンロードしたメールセクションのコマンドを使用して、ファイルを操作できます。

IMAPのメールボックスはフォルダのように操作でき、フォルダがファイルやサブフォルダを含むことができるように、メールボックスもメッセージやサブメールボックスを含むことができます。

メールボックスには完全な階層名を使用してアクセスできます。それぞれの階層レベルは、IMAP_ListMBs コマンドで返される階層セパレータで分けられます。

セパレータを使用して、子メールボックスを作成したり、名前階層の上位レベルまたは下位レベルを検索したりできます。階層のトップレベルのすべての子階層は、同じセパレータ文字を使用します。

Note: メッセージはカレントのメールボックスを選択 (IMAP_SetCurrentMB) した後にのみ操作できます。

アカウントごとに一つまたは複数のメールボックスを持つことができます。

メールボックスは大文字小文字を区別しますが、大文字と小文字の違いしかない複数のメールボックスを作成することはできません。

INBOXメールボックスは特別なケースです。このメールボックスはすべてのアカウントに存在し、受信したメッセージを格納するために使用されます。アカウントがセットアップされると、INBOXは自動で作成されます。

ユーザはINBOXメールボックスを削除できませんが、名称変更は可能です。新しい空のINBOXがすぐに作成されます。INBOXは大文字小文字を区別しません。

メッセージ総数や新規メッセージ数などのいくつかのメールボックス属性は、メールボックスがカレントでなくてもチェックできます。

IMAPコマンド使用時、よく利用される引数、特にメールボックスメカニズムのmsgNumuniqueIDについて理解することが重要です。

msgNumは、IMAP_SetCurrentMBコマンドが実行された時のメールボックス中のメッセージ番号です。

カレントメールボックスを選択すると、メールボックス中のメッセージには1からメッセージ数までの番号がふられます。メッセージには受信された順番 に番号がふられ、1がもっとも古いメッセージとなります。メッセージふられた番号は、カレントのメールボックスを選択してから (IMAP_SetCurrentMB) それを閉じるまで (IMAP_CloseCurrentMB, IMAP_SetCurrentMBまたは IMAP_Logout) のみ有効です。

メールボックスが閉じられると、削除のマークが付けられたメッセージは削除されます。

ユーザがIMAPサーバに再ログインすると、メールボックス中のメッセージは再度1から番号付けされます。例えばメールボックスに10のメッセージ があり、1から5までが削除されると、再度メールボックスを開いた際には以前の6から10のメッセージに1から5の番号が付けられます。

例えば以下の例を見てみましょう: IMAPサーバにログインして以下のメッセージリストを取得したとします:

msgNumuniqueID日付送信者件名
1100051 Jul 2001 ...danw@acme.comSales lead...
2100081 Jul 2001 ...frank@acme.comSite-License order
3100123 Jul 2001 ...joe@acme.comLunch anyone?
4200004 Jul 2002 ...kelly@acme.comYour wife called...
5200014 Jul 2002 ...track@fedex.comFedEx tracking

このセッションの間、メッセージ番号3と4が削除されます。カレントのメールボックスを閉じると、実際に削除が実行されます。サーバに再度ログインすると、メッセージリストは以下のようになります:

msgNumuniqueID日付送信者件名
1100051 Jul 2001 ...danw@acme.comSales lead...
2100081 Jul 2001 ...frank@acme.comSite-License order
3200014 Jul 2002 ...track@fedex.comFedEx tracking

msgNum はスタティックな値ではなく、セッションごとに異なる可能性があります。メッセージ番号は、メールボックスが選択された時のメッセージの状態で変化します。

ところで、uniqueIDはユニークな値で、IMAPサーバが昇順にメッセージに付加します。メールボックスにメッセージが追加されると、以前に追加されたメッセージより上の値が割り当てられます。

残念なことに、IMAPサーバはメッセージの主たる参照としてuniqueIDを使用しません。IMAPコマンドを使用する際は、メッセージを参照するためにmsgNumを使用する必要があります。データベースにメッセージ参照を格納し、メッセージそのものはサーバに残すようなソリューションを構築する際、開発者はこの点に留意する必要があります。

推奨  

IMAPは全体として相対的なものであり、独立してテストすることはできないため、"すべてをテストする"ことをお勧めします。アカウントを取得可能なすべてのサーバに対してテストを行うようにしてください。

詳細は以下のサイトをチェックしてください:

Login 同等IMAPにaPOP引数はありません
VerifyID同等
Delete同等IMAPはリアルタイムで削除を行います。POP3はPOP3_Logoutを待って恒久削除を行います。IMAP_SetFlagsで\Deletedフラグを使用すれば、POP3_Deleteコマンドと同じ結果になります。
Logout同等
SetPrefs同等IMAPにattachFolderはありません。POP3のattachFolderはオプションです。
GetPrefs同等SetPrefsのattachFolderに関するメモを参照
MsgLstInfo 同等
MsgInfo同等
MsgLst同等
UIDToMsgNum同等IMAPのmsgUIDは倍長整数ですが、POP3のmsgUIDは文字列です。
Download同等
POP3_Reset代替IMAP_Searchで\Deletedの検索を行い、IMAP_SetFlagsで\Deletedフラグを削除します。
POP3_BoxInfo代替IMAP_SetCurrentMBとIMAP_MsgLstInfoを使用する必要があります。
IMAP_ MsgNumToUID 代替
GetMessage殆ど同等IMAPはよりパワフルで、"ボディのみ"を選択可能
POP3_Charset同等無IMAPは自動で文字セットを管理
IMAP_Capability同等無IMAPプロトコルのみ
IMAP_ListMBs同等無IMAPプロトコルのみ
IMAP_GetMBStatus同等無IMAPプロトコルのみ
IMAP_SetCurrentMB同等無IMAPプロトコルのみ
IMAP_GetCurrentMB同等無IMAPプロトコルのみ
IMAP_CloseCurrentMB同等無IMAPプロトコルのみ
IMAP_CopyToMB同等無IMAPプロトコルのみ
IMAP_SubscribeMB同等無IMAPプロトコルのみ
IMAP_CreateMB同等無IMAPプロトコルのみ
IMAP_DeleteMB同等無IMAPプロトコルのみ
IMAP_RenameMB同等無IMAPプロトコルのみ
IMAP_SetFlags同等無IMAPプロトコルのみ
IMAP_GetFlags同等無IMAPプロトコルのみ
IMAP_Search同等無IMAPプロトコルのみ
IMAP_MsgFetch同等無IMAPプロトコルのみ


Notes:
  • IMAPとPOP3サーバ: IMAPサーバの場合、msgIDは倍長整数であることに注意してください。
  • POP3とIMAPプロトコルでは、削除の方法が異なります。IMAP_Deleteはリアルタイムでメッセージを取り除きます。POP3_Deleteと同じ結果を得るには、IMAP_SetFlagsを使用して\Deletedフラグを設定してください。POP3_Resetと同じ結果を得るには、IMAP_SetFlagsを使用して\Deletedを削除します。
  • 4D Internet commandsではPOP3, IMAP, FTP接続参照を直接低レベルTCPコマンドに渡すことができ、またその逆も可能です。詳細は低レベルルーチン - 概要セクションを参照してください。

 
プロパティ 

プロダクト: 4D Internet Commands
テーマ: IC IMAP メール閲覧

 
履歴 

 
ARTICLE USAGE

4D Internet Commands ( 4D Internet Commands v16)