一連のPOP3コマンドを使用して、POP3メールサーバからメールの受信が可能になります。4D Internet CommandsはMIME互換であり、複数のパートからなるメッセージを認識および展開できます。
POP3関連のコマンドは二つのセクション"IC POP3 メール閲覧"と"IC ダウンロードしたメール"に分けられます。この分離はメールを読み込む異なる方法を表しています。POP3サーバからメールを読みだす際、メッセージ (またはメッセージに関する情報) は (変数, フィールド, 配列など) 4Dのオブジェクトに格納されるか、ディスクにダウンロードされます。この"IC POP3 メール閲覧"セクションでは、4D Internet Commandsを使用してPOP3サーバから4Dオブジェクトにメッセージを読み込むコマンドを説明します。
メッセージの受信に二つの方法が用意されている理由は、何メガバイトもあるメッセージをダウンロードするかもしれない場合のメモリの制限のためです。例えば、5MBの添付ファイルがあるメッセージは、容易にデータベースの格納容量をオーバーフローさせます。4Dオブジェクトでこのサイズを格納できるのはピクチャやBlobです。しかしメッセージや添付ファイルをこれらのオブジェクトに変換するのは、大きなメモリ空間が必要なため、効率的ではありません。これを解決するために、このセクションにはPOP3_Downloadコマンドが用意され、POP3サーバからメッセージをローカルディスクにダウンロードできるようになっています。ディスクに保存された後は、"IC ダウンロードしたメール"セクションのコマンドを使用して、ファイルを操作できます。
一連のPOP3コマンドを使用する際、よく使用される引数、特にmsgNumberとuniqueIDについて理解することが重要です。msgNumberは、POP3_Loginが実行された際のメールボックス内のメッセージ毎の番号です。ログイン時に、メールボックス内のメッセージには1からメッセージ数までの数値が割り当てられます。番号はメールボックスに届いた順に付けられ、1がもっとも古いメッセージとなります。この番号はPOP3_LoginからPOP3_Logoutまでの間のみ有効です。
POP3_Logoutが実行された時、削除マークが付けられたメッセージは削除されます。ユーザが再度サーバにログインすると、現在メールボックスにあるメッセージに再び番号が割り当てられます。例えば、メールボックスに10のメッセージがあり、1から5までのメッセージが削除されると、次回のログイン時には6から10番目のメッセージが1から5に番号付けされます。
POP3サーバにログインして、以下のメッセージリストを所得したとします。
# | UniqueID | 日付 | 送信者 | 件名 |
1 | bd573a4dbd573a4d | 1 Jul 1998 … | jimw@acme.com | Sales lead… |
2 | bd574dc7bd574dc7 | 1 Jul 1998 … | frank@acme.com | Site-License order |
3 | bd575f06bd575f06 | 3 Jul 1998 … | joe@acme.com | Lunch anyone? |
4 | bd5761d4bd5761d4 | 4 Jul 1998 … | kelly@acme.com | Your wife called… |
5 | bd577dc7db577dc5 | 4 Jul 1995 … | track@fedex.com | FedEx tracking |
セッション中メッセージ3と4を削除します。セッションをログアウトすると、リクエスト済みの削除が実行されます。再度ログインするとメッセージリストは以下のようになります:
# | UniqueID | 日付 | 送信者 | 件名 |
1 | bd573a4dbd573a4d | 1 Jul 1998 … | jimw@acme.com | Sales lead… |
2 | bd574dc7bd574dc7 | 1 Jul 1998 … | frank@acme.com | Site-License order |
3 | bd577dc7db577dc5 | 4 Jul 1995 … | track@fedex.com | FedEx tracking |
msgNumberはスタティックな値ではなく、セッションが開かれた時のメールボックス中のメッセージに基づいて割り当てられます。ところで、
uniqueIDはユニークな値で、サーバがメッセージを受信した際に割り当てられます。このIDはPOP3サーバが、メッセージを受信したときの日付や時間に基づいて計算し、割り当てます。残念ながらPOP3サーバは
uniqueIDをメッセージの主たる参照としては扱いません。POP3コマンドを通じて、サーバのメッセージを参照するためには
msgNumberを使用します。データベースにメッセージ参照を格納し、メッセージはサーバに残すようなソリューションを構築する際、開発者はこの点に留意する必要があります。
Note: 4D Internet commandsではPOP3, IMAP, FTP接続参照を直接低レベルTCPコマンドに渡すことができ、またその逆も可能です。詳細は
低レベルルーチン - 概要セクションを参照してください。