メインコンテンツまでスキップ
バージョン: v20 R4 BETA

POP3Transporter

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

POP3 Transporter オブジェクト

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

.acceptUnsecureConnection : Boolean    暗号化されていない接続の確立が許可されてれば true を格納します
.authenticationMode : Text    メールサーバーのセッションを開くのに使用される認証モードを格納します
.checkConnection() : Object     transporter オブジェクトが保存する情報を使用して接続をチェックします
.connectionTimeOut : Integer    サーバー接続の確立までに待機する最長時間 (秒単位) を格納します
.delete( msgNumber : Integer )    msgNumber で指定したメールメッセージに対して、POP3サーバーから削除するためのフラグを立てます
.getBoxInfo() : Object    対象の POP3 transporter が指定するメールボックスに対応する boxInfo オブジェクトを返します
.getMail( msgNumber : Integer { ; headerOnly : Boolean } ) : Object    POP3 transporter が指定するメールボックス内の、msgNumber に対応するメールを Email オブジェクトとして返します
.getMailInfo( msgNumber : Integer ) : Object    POP3 transporter が指定するメールボックス内の、msgNumber に対応するメールの mailInfo オブジェクトを返します
.getMailInfoList() : Collection    POP3 transporter が指定するメールボックス内の全メッセージについて記述した mailInfo オブジェクトのコレクションを返します
.getMIMEAsBlob( msgNumber : Integer ) : Blob    POP3_transporter が指定するメールボックス内の、msgNumber に対応するメッセージの MIMEコンテンツを格納した BLOB を返します
.host : Text    ホストサーバーの名前または IPアドレスを格納します
.logFile : Text    メール接続に対して定義された拡張ログファイル (あれば) へのフルパスを格納します
.port : Integer     メール通信に使用されるポート番号を格納します
.undeleteAll()    POP3_transporter 内のメールに設定された削除フラグをすべて除去します
.user : Text     メールサーバーでの認証に使用されたユーザー名を格納します

POP3 New transporter

履歴
バージョン内容
v18 R2追加

POP3 New transporter( server : Object ) : 4D.POP3Transporter

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

|

説明

POP3 New transporter コマンドは、 新規の POP3接続を設定します。この POP3接続は、server 引数の指定に応じてを設定され、コマンドの戻り値は新しい POP3 transporter オブジェクトです。 返される transporter オブジェクトは通常、メールの受信に使用されます。

server 引数として、以下のプロパティを持つオブジェクトを渡します:

serverデフォルト値 (省略時)
.acceptUnsecureConnection : Boolean    暗号化されていない接続の確立が許可されてれば true を格納しますfalse
.accessTokenOAuth2: Text
.accessTokenOAuth2: Object
OAuth2 認証の資格情報を表すテキスト文字列またはトークンオブジェクト。 authenticationMode が OAUTH2 の場合のみ使用されます。 accessTokenOAuth2 が使用されているが authenticationMode が省略されていた場合、OAuth2 プロトコルが使用されます (サーバーで許可されていれば)。 POP3 transporter オブジェクトには返されません。
なし
.authenticationMode : Text    メールサーバーのセッションを開くのに使用される認証モードを格納しますサーバーがサポートするもっともセキュアな認証モードが使用されます
.connectionTimeOut : Integer    サーバー接続の確立までに待機する最長時間 (秒単位) を格納します30
.host : Text    ホストサーバーの名前または IPアドレスを格納します必須
.logFile : Text    メール接続に対して定義された拡張ログファイル (あれば) へのフルパスを格納しますなし
.password : Text
サーバーとの認証のためのユーザーパスワード。 POP3 transporter オブジェクトには返されません。
なし
.port : Integer     メール通信に使用されるポート番号を格納します995
.user : Text     メールサーバーでの認証に使用されたユーザー名を格納しますなし

戻り値

この関数は、POP3 transporter オブジェクト を返します。 返されるプロパティはすべて 読み取り専用 です。

POP3接続は、transporter オブジェクトが消去された時点で自動的に閉じられます。

例題

 var $server : Object
$server:=New object
$server.host:="pop.gmail.com" // 必須
$server.port:=995
$server.user:="4d@gmail.com"
$server.password:="XXXXXXXX"
$server.logFile:="LogTest.txt" // Logsフォルダーに保存するログ

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

$status:=$transporter.checkConnection()
If(Not($status.success))
ALERT("メール受信中にエラーが発生しました: "+$status.statusText)
End if

4D.POP3Transporter.new()

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

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

|

説明

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

.acceptUnsecureConnection

履歴
バージョン内容
v17 R4追加

.acceptUnsecureConnection : Boolean

説明

.acceptUnsecureConnection プロパティは、 暗号化されていない接続の確立が許可されてれば true を格納します (暗号化された接続が不可能な場合)。

暗号化されていない接続が許可されていない場合には false が格納されており、その場合に暗号化された接続が不可能な場合にはエラーが返されます。

使用可能なセキュアなポートは次のとおりです:

  • SMTP

    • 465: SMTPS
    • 587 または 25: STARTTLS アップグレードがされた SMTP (サーバーがサポートしていれば)
  • IMAP

    • 143: IMAP 非暗号化ポート
    • 993: STARTTLS アップグレードがされた IMAP (サーバーがサポートしていれば)
  • POP3

    • 110: POP3 非暗号化ポート
    • 995: STARTTLS アップグレードがされた POP3 (サーバーがサポートしていれば)

.authenticationMode

履歴
バージョン内容
v17 R4追加

.authenticationMode : Text

説明

.authenticationMode プロパティは、メールサーバーのセッションを開くのに使用される認証モードを格納します。

デフォルトでは、サーバーによってサポートされている最も安全なモードが使用されます。

とりうる値:

定数説明
APOPPOP3 authentication APOPAPOP プロトコルを使用した認証 (POP3 のみ)
CRAM-MD5POP3 authentication CRAM MD5CRAM-MD5 プロトコルを使用した認証
LOGINPOP3 authentication loginLOGIN プロトコルを使用した認証
OAUTH2POP3 authentication OAUTH2OAuth2 プロトコルを使用した認証
PLAINPOP3 authentication plainPLAIN プロトコルを使用した認証

.checkConnection()

履歴
バージョン内容
v17 R4追加

.checkConnection() : Object

引数タイプ説明
戻り値Object<-transporter オブジェクト接続のステータス

|

説明

.checkConnection() 関数は、 transporter オブジェクトが保存する情報を使用して接続をチェックします。必要なら再接続をし、そのステータスを返します。 この関数を使用して、ユーザーから提供された値が有効かどうかを検証することができます。

返されるオブジェクト

この関数はメールサーバーにリクエストを送信し、メールステータスを表すオブジェクトを返します。 このオブジェクトには、次のプロパティが格納されることがあります:

プロパティタイプ説明
successbooleanチェックが成功した場合には true、それ以外は false
statusnumber(SMTPのみ) メールサーバーから返されたコード (メール処理に関係ない問題の場合には 0)
statusTexttextメールサーバーから返されたステータスメッセージ、または 4Dエラースタック内に返された最後のエラー
errorscollection4Dエラースタック (メールサーバーレスポンスが受信できた場合には返されません)
[ ].errCodenumber4Dエラーコード
[ ].messagetext4Dエラーの詳細
[ ].componentSignaturetextエラーを返した内部コンポーネントの署名

例題

 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("Error: "+$status.statusText)
End if
End if

.connectionTimeOut

履歴
バージョン内容
v17 R5追加

.connectionTimeOut : Integer

説明

.connectionTimeOut プロパティは、 サーバー接続の確立までに待機する最長時間 (秒単位) を格納します。 SMTP New transporterPOP3 New transporterIMAP New transporter のコマンドで transporter オブジェクトを作成する際に使用される server オブジェクトにおいて、 このプロパティが指定されなかった場合のデフォルトは 30 です。

.delete()

履歴
バージョン内容
v18 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()

履歴
バージョン内容
v18 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()

履歴
バージョン内容
v20headerOnly パラメーターをサポート
v18 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()

履歴
バージョン内容
v18 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()

履歴
バージョン内容
v18 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()

履歴
バージョン内容
v18 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)

.host

履歴
バージョン内容
v17 R5追加

.host : Text

説明

.host プロパティは、 ホストサーバーの名前または IPアドレスを格納します。 この情報はメール通信 (SMTP、POP3、IMAP) に使用されます。

.logFile

履歴
バージョン内容
v17 R5追加

.logFile : Text

説明

.logFile プロパティは、 メール接続に対して定義された拡張ログファイル (あれば) へのフルパスを格納します。 パスは、カレント Logs フォルダーを基準とした相対パス、あるいは絶対パスを指定できます。

SET DATABASE PARAMETER コマンドで有効化される通常のログファイルとは異なり、拡張ログファイルはすべての送信されたメールの MIMEコンテンツを保存し、サイズ制限がありません。 拡張ログファイルの詳細については、以下の章をそれぞれ参照ください:

.port

履歴
バージョン内容
v17 R4追加

.port : Integer

説明

.port プロパティは、 メール通信に使用されるポート番号を格納します。 SMTP New transporterPOP3 New transporterIMAP New transporter のコマンドで transporter オブジェクトを作成する際に使用される server オブジェクトにおいて、 このプロパティが指定されなかった場合に使用されるポートは次のとおりです:

  • SMTP - 587
  • POP3 - 995
  • IMAP - 993

.undeleteAll()

履歴
バージョン内容
v18 R2追加

.undeleteAll()

引数タイプ説明
このコマンドは引数を必要としません

|

説明

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

.user

履歴
バージョン内容
v17 R4追加

.user : Text

説明

.user プロパティは、 メールサーバーでの認証に使用されたユーザー名を格納します。