メインコンテンツまでスキップ
バージョン: 20 R10

POP3Transporter

POP3Transporter クラスを使って、POP3 メールサーバーからメッセージを取得することができます。

POP3 Transporter オブジェクト

POP3 Transporter オブジェクトは POP3 New transporter コマンドによってインスタンス化されます。 これらは、次のプロパティや関数を持ちます:
















4D.POP3Transporter.new()

4D.POP3Transporter.new*( server : Object ) : 4D.POP3Transporter

引数説明
serverObject->メールサーバー情報
戻り値4D.POP3Transporter<-POP3 transporter オブジェクト

説明

4D.POP3Transporter.new() 関数は、新規の 4D.POP3Transporter型オブジェクトを作成して返します。 この関数の機能は、POP3 New transporter コマンドと同一です。

例題

 var $pw :  Text
var $options : Object
$options:=New object

$pw:=Request("パスワードを入力してください:")
if(OK=1)
$options.host:="pop3.gmail.com"

$options.user:="test@gmail.com"
$options.password:=$pw

$transporter:=POP3 New transporter($options)

$status:=$transporter.checkConnection()
If($status.success)
ALERT("POP3接続チェックに成功しました。")
Else
ALERT("エラー: "+$status.statusText)
End if
End if

.delete()

履歴
リリース内容
18 R2追加

.delete*( msgNumber : Integer )

引数説明
msgNumberInteger->削除するメッセージの番号
説明

.delete() 関数は、msgNumber で指定したメールメッセージに対して、POP3サーバーから削除するためのフラグを立てます。

msgNumber には、削除するメールの番号を渡します。 この番号は、.getMailInfoList() 関数によって number プロパティに返されます。

この関数を実行しても、メールが実際に削除される訳ではありません。 フラグが立てられたメールは、(POP3 New transporter で作成された) POP3_transporter オブジェクトが消去された時に初めて POP3サーバーから削除されます。 立てたフラグは、.undeleteAll() 関数を使用して削除することもできます。

カレントセッションが予期せず終了して接続が閉じられた場合 (例: タイムアウト、ネットワーク問題等) にはエラーメッセージが生成され、削除フラグが立てられたメールは削除されずに POP3サーバー上に残ります。

例題
 $mailInfoList:=$POP3_transporter.getMailInfoList()
For each($mailInfo;$mailInfoList)
// "セッション終了時に削除" とメールのフラグを立てます
$POP3_transporter.delete($mailInfo.number)
End for each
// セッションを強制的に終了し、削除フラグを立てたメールを削除します
CONFIRM("選択されているメッセージは削除されます。 ";"削除する";"元に戻す")
If(OK=1) // 削除を選んだ場合
$POP3_transporter:=Null
Else
$POP3_transporter.undeleteAll() // 削除フラグを消去します
End if

.getBoxInfo()

履歴
リリース内容
18 R2追加

.getBoxInfo()* : Object

引数説明
戻り値Object<-boxInfo オブジェクト
説明

.getBoxInfo() 関数は、対象の POP3 transporter が指定するメールボックスに対応する boxInfo オブジェクトを返します。 この関数を使用するとメールボックスに関する情報を取得することができます。

返される boxInfo オブジェクトには、以下のプロパティが格納されています:

プロパティ説明
mailCountNumberメールボックス内のメッセージの数
sizeNumberメッセージのサイズ (バイト単位)
例題
 var $server; $boxinfo : Object

$server:=New object
$server.host:="pop.gmail.com" // 必須
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

// メールボックス情報
$boxInfo:=$transporter.getBoxInfo()
ALERT("メールボックスには "+String($boxInfo.mailCount)+" 件のメッセージがあります。")

.getMail()

履歴
リリース内容
20headerOnly パラメーターをサポート
18 R2追加

.getMail*( msgNumber : Integer { ; headerOnly : Boolean } ) : Object

引数説明
msgNumberInteger->リスト中のメッセージの番号
headerOnlyBoolean->メールヘッダーのみをダウンロードする場合は true (デフォルトは false)
戻り値Object<-Email オブジェクト
説明

.getMail() 関数は、 POP3 transporter が指定するメールボックス内の、msgNumber に対応するメールを Email オブジェクトとして返します。 この関すを使用すると、メールのコンテンツをローカルで管理できるようになります。

msgNumber には、取得するメッセージの番号を渡します。 この番号は、.getMailInfoList() 関数によって number プロパティに返されます。

任意で、headerOnlytrue を渡すと、返される Email オブジェクトからボディ部を除外することができます。 その場合、ヘッダープロパティ (headers, to, from...) のみが返されます。 サーバーにメールが大量にある場合に、このオプションでダウンロードを最適化することができます。

headerOnly オプションは、サーバー側でサポートされていない可能性があります。

この関数は、以下の場合には Null を返します:

  • msgNumber で指定したメッセージが存在しない場合
  • 指定したメッセージが .delete() によって削除フラグが立てられていた場合

返されるオブジェクト

.getMail()Email オブジェクト を返します。

例題

メールボックスにある最初のメールの送信者を調べます:

 var $server; $transporter : Object
var $mailInfo : Collection
var $sender : Variant

$server:=New object
$server.host:="pop.gmail.com" // 必須
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

$mailInfo:=$transporter.getMailInfoList()

$sender:=$transporter.getMail($mailInfo[0].number).from

.getMailInfo()

履歴
リリース内容
18 R2追加

.getMailInfo*( msgNumber : Integer ) : Object

引数説明
msgNumberInteger->リスト中のメッセージの番号
戻り値Object<-MailInfo オブジェクト
説明

.getMailInfo() 関数は、 POP3 transporter が指定するメールボックス内の、msgNumber に対応するメールの mailInfo オブジェクトを返します。 この関数を使用するとメールに関する情報を取得することができます。

msgNumber には、取得するメッセージの番号を渡します。 この番号は、.getMailInfoList() 関数によって number プロパティに返されます。

返される mailInfo オブジェクトには、以下のプロパティが格納されています:

プロパティ説明
sizeNumberメッセージのサイズ (バイト単位)
idTextメッセージの固有ID

この関数は、以下の場合には Null を返します:

  • msgNumber で指定したメッセージが存在しない場合
  • 指定したメッセージが .delete( ) によって削除フラグが立てられていた場合
例題
 var $server; $mailInfo : Object
var $mailNumber : Integer

$server.host:="pop.gmail.com" // 必須
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

// メッセージ情報
$mailInfo:=$transporter.getMailInfo(1) // 先頭メールを取得します
If($mailInfo #Null)
ALERT("最初のメールのサイズは "+String($mailInfo.size)+" バイトです。")
End if

.getMailInfoList()

履歴
リリース内容
18 R2追加

.getMailInfoList()* : Collection

引数説明
戻り値Collection<-mailInfo オブジェクトのコレクション
説明

.getMailInfoList() 関数は、POP3 transporter が指定するメールボックス内の全メッセージについて記述した mailInfo オブジェクトのコレクションを返します。 この関数を使用すると、POP3メールサーバー上にあるメッセージの一覧をローカルで管理することができるようになります。

返されるコレクションの各 mailInfo オブジェクトには、以下のプロパティが格納されています:

プロパティ説明
[ ].sizeNumberメッセージのサイズ (バイト単位)
[ ].numberNumberメッセージの番号
[ ].idTextメッセージの固有ID (メッセージをローカルに保存する場合に有用です)

メールボックスにメッセージが一通もない場合、空のコレクションが返されます。

number と id プロパティについて

number プロパティは、POP3_transporter が作成された時点でのメールボックス内にあるメッセージの数です。 number プロパティは、特定のメッセージと紐づいた静的な値ではなく、セッション開始時点のメールボックス内のメッセージ同士の関係に応じてセッション間で値が異なります。 メッセージに割り当てられた番号は、POP3_transporter が維持されている間のみ有効です。 POP3_transporter が消去されると、削除フラグが立てられていたメッセージは削除されます。 ユーザーが再度サーバーにログインした場合、メールボックス内にあるカレントメッセージに対して、1 から x までの番号が再度割り振られます。

これに対し、id プロパティは、メッセージがサーバーで受信された時に割り振られる固有の番号です。 その番号はメッセージを受信した日付と時間を使用して計算され、POP3サーバーによって値が割り当てられます。 残念ながら、POP3サーバーは id プロパティをメッセージに対する主な参照としては使用しません。 POP3 セッションの間、サーバー上のメッセージを参照するには number プロパティを指定する必要があります。 メッセージ参照をデータベース内に取得しながらメッセージ本文はサーバー上に残しておくようなソリューションを開発する場合、メッセージの指定には細心の注意を払う必要があります。

例題

メールボックス内にあるメールの総数と総サイズを取得します:

 var $server : Object
$server:=New object
$server.host:="pop.gmail.com" // 必須
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

var $transporter : 4D.POP3Transporter
$transporter:=POP3 New transporter($server)

C_COLLECTION($mailInfo)
C_LONGINT($vNum;$vSize)

$mailInfo:=$transporter.getMailInfoList()
$vNum:=$mailInfo.length
$vSize:=$mailInfo.sum("size")

ALERT("メールボックスには "+String($vNum)+" 件のメッセージがあります。 合計サイズは "+String($vSize)+" バイトです。")

.getMIMEAsBlob()

履歴
リリース内容
18 R3追加

.getMIMEAsBlob*( msgNumber : Integer ) : Blob

引数説明
msgNumberInteger->リスト中のメッセージの番号
戻り値BLOB<-メールサーバーから返された MIME文字列の BLOB
説明

.getMIMEAsBlob() 関数は、POP3_transporter が指定するメールボックス内の、msgNumber に対応するメッセージの MIMEコンテンツを格納した BLOB を返します。

msgNumber には、取得するメッセージの番号を渡します。 この番号は、.getMailInfoList() 関数によって number プロパティに返されます。

この関数は、以下の場合には空の BLOB を返します:

  • msgNumber で指定したメッセージが存在しない場合
  • 指定したメッセージが .delete() によって削除フラグが立てられていた場合

返される BLOB

.getMIMEAsBlob()BLOB を返します。この BLOB はデータベースにアーカイブしたり、MAIL Convert from MIME コマンドを使用して Email オブジェクト へと変換したりすることができます。

例題

メールボックス内にあるメールの総数と総サイズを取得します:

 var $server : Object
var $mailInfo : Collection
var $blob : Blob
var $transporter : 4D.POP3Transporter

$server:=New object
$server.host:="pop.gmail.com"
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"

$transporter:=POP3 New transporter($server)

$mailInfo:=$transporter.getMailInfoList()
$blob:=$transporter.getMIMEAsBlob($mailInfo[0].number)

.undeleteAll()

履歴
リリース内容
18 R2追加

*.undeleteAll()**

引数説明
引数を必要としません
説明

.undeleteAll() 関数は、POP3_transporter 内のメールに設定された削除フラグをすべて除去します。