![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1 |

POP3 メール受信の手順
![]() |
POP3 プロトコルに関する詳細情報 |
|---|---|
POP3 の仕様 : RFC1939 ( Post Office Protocol - Version 3 ) | |
| コンストラクタ/デストラクタ |
|---|
|
SFXPOP3( Void ) SFXPOP3 クラスのコンストラクタです。
|
|
~SFXPOP3( Void ) SFXPOP3 クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| Void |
Cancel( Void ) POP3 メール受信をキャンセルします。
|
| Void |
Close( Void ) POP3 サーバーとの接続を終了します。
|
| SFCError |
Connect(
SFXSocketAddressConstRef address
, CallbackSPP spp
, VoidPtr reference
) POP3 サーバーに接続します。
|
| SFCError |
GetListResponse(
NumberSizeRecHandle recHandle
, SInt32Ptr recCount
) GetListResponse( NumberSizeRecPtr rec ) LIST コマンドの応答を取得します。
|
| SFCError |
GetLocalAddress(
SFXSocketAddressPtr result
) ローカルの IP アドレスとポート番号を取得します。
|
| SFCError |
GetRemoteAddress(
SFXSocketAddressPtr result
) リモートの IP アドレスとポート番号を取得します。
|
| VoidConstPtr |
GetResponseBuffer(
UInt32Ptr size = null
) 応答バッファを取得します。
|
| SFXAnsiString |
GetResponseText( Void ) 応答テキストを取得します。
|
| SFCError |
GetResponseText(
SFXAnsiStringPtr result
) 応答テキストを取得します。
|
| SFCError |
GetRetrResponse(
ACharConstHandle response
) GetRetrResponse( SFXAnsiStringPtr response ) RETR コマンドの応答を取得します。
|
| Bool |
GetSSLMode( Void ) SSL 接続モードを取得します。
|
| SFCError |
GetStatResponse(
UInt32Ptr count = null
, UInt32Ptr size = null
) STAT コマンドの応答を取得します。
|
| SFCError |
GetTopResponse(
ACharConstHandle response
) GetTopResponse( SFXAnsiStringPtr response ) TOP コマンドの応答を取得します。
|
| UInt32 |
GetTrustMode( Void ) SSL 認証モードを取得します。
|
| SFCError |
GetUidlResponse(
NumberUidlRecHandle recHandle
, SInt32Ptr recCount
) GetUidlResponse( NumberUidlRecPtr rec ) UIDL コマンドの応答を取得します。
|
| Bool |
IsResponseErr( Void ) 直前の POP3 コマンドの応答ステータスが "-ERR" であるかどうか判定します。
|
| Bool |
IsResponseOk( Void ) 直前の POP3 コマンドの応答ステータスが "+OK" であるかどうか判定します。
|
| SFCError |
Open( Void ) POP3 サーバーに接続するための初期化を行います。
|
| SFCError |
SendApopCommand(
SFXAnsiStringConstRef user
, SFXAnsiStringConstRef password
, SFXAnsiStringConstRef challenge
) APOP コマンドを送信します。
|
| SFCError |
SendCommand(
ACharConstPtr command
, UInt32 size
, Bool multiline
) SendCommand( SFXAnsiStringConstRef command , Bool multiline ) POP3 コマンドを送信します。
|
| SFCError |
SendDeleCommand(
SInt32 number
) DELE コマンドを送信します。
|
| SFCError |
SendListCommand( Void ) SendListCommand( SInt32 number ) LIST コマンドを送信します。
|
| SFCError |
SendNoopCommand( Void ) NOOP コマンドを送信します。
|
| SFCError |
SendPassCommand(
SFXAnsiStringConstRef password
) PASS コマンドを送信します。
|
| SFCError |
SendQuitCommand( Void ) QUIT コマンドを送信します。
|
| SFCError |
SendRetrCommand(
SInt32 number
) RETR コマンドを送信します。
|
| SFCError |
SendRsetCommand( Void ) RSET コマンドを送信します。
|
| SFCError |
SendStatCommand( Void ) STAT コマンドを送信します。
|
| SFCError |
SendTopCommand(
SInt32 number
, UInt32 lines
) TOP コマンドを送信します。
|
| SFCError |
SendUidlCommand( Void ) SendUidlCommand( SInt32 number ) UIDL コマンドを送ります。
|
| SFCError |
SendUserCommand(
SFXAnsiStringConstRef user
) USER コマンドを送信します。
|
| Void |
SetSSLMode(
Bool isSSL
) SSL 接続モードに設定します。
|
| SFCError |
SetTrustMode(
UInt32 sslTrustMode
) SSL 認証モードを設定します。
|
| 型 |
|---|
|
CallbackSPP コールバック関数のプロトタイプです。
|
|
NumberSizeRec
GetListResponse 関数で結果を返すために使用される構造体です。
|
|
NumberUidlRec
SFXPOP3::GetUidlResponse 関数で結果を返すために使われる構造体です。
|
[ public, explicit ] SFXPOP3(Void);
SFXPOP3 クラスのインスタンスを生成しただけでは、POP3 メール受信に必要なリソースは割り当てられていません。 SFXPOP3::Open 関数を呼び出すと、POP3 メール受信に必要なリソースが確保されます。
[ public, virtual ] ~SFXPOP3(Void);
SFXPOP3 クラスのインスタンスを破棄する前に、SFXPOP3::Close 関数を呼び出す必要があります。
[ public ] Void Cancel(Void);
[ public ] Void Close(Void);
通信中であれば通信がキャンセルされ、通信のためのリソースは解放されます。
![]() |
POP3 サーバーとの接続の切断方法 |
|---|---|
SFXPOP3::SendQuitCommand 関数で QUIT コマンドを送信し、POP3 サーバーからの応答を確認してから、SFXPOP3::Close 関数で POP3 サーバーとの接続を切断します。 | |
[ public ] SFCError Connect( SFXSocketAddressConstRef address // POP3 サーバーの IP アドレスとポート番号 CallbackSPP spp // コールバック関数 VoidPtr reference // コールバックへの引数 );
POP3 サーバーの IP アドレスとポート番号を指定します。
![]() |
POP3 サーバーとの接続エラー |
|---|---|
POP3 サーバーとの接続エラーはコールバック関数に通知されます。 | |
[ public, const ] SFCError GetListResponse( NumberSizeRecHandle recHandle // メール メッセージ番号配列 SInt32Ptr recCount // メール メッセージ番号配列の要素数 );
[ public, const ] SFCError GetListResponse( NumberSizeRecPtr rec // メール メッセージ番号 );
POP3 サーバーが応答するメール メッセージの番号とサイズからなる構造体 SFXPOP3::NumberSizeRec の配列へのポインターを格納するためのハンドルです。 recHandle 配列は、呼び出し側が delete[] で破棄する必要があります。
POP3 サーバーが応答する recHandle 配列の要素数を格納するための変数へのポインターです。
POP3 サーバーが応答するメール メッセージの番号とサイズからなる構造体 SFXPOP3::NumberSizeRec を格納するための変数へのポインターです。
LIST コマンドは、POP3 サーバーが応答するメール メッセージのサイズを取得するためのコマンドです。
SFXPOP3::SendListCommand 関数の引数の数によって、使う関数が異なります。
2 つの引数 recHandle と recCount を指定する必要があります。全てのメール メッセージの番号とサイズを取得します。
引数 rec のみ必要です。 SFXPOP3::SendListCommand 関数で指定したメール メッセージの番号のサイズを取得します。
これらが対応していないと、SFXPOP3::GetListResponse 関数は失敗し、SFERR_INVALID_FORMAT が返ります。 戻り値が SFERR_NO_ERROR 以外の場合、引数に設定される値は不定となります。
[ public, const ] SFCError GetLocalAddress( SFXSocketAddressPtr result // ローカルの IP アドレスとポート番号の格納先へのポインター );
![]() |
ローカルの IP アドレスの変化 |
|---|---|
POP3 サーバーとの接続前後で、ローカルの IP アドレスは変化する可能性があります。 | |
[ public, const ] SFCError GetRemoteAddress( SFXSocketAddressPtr result // リモートの IP アドレスとポート番号の格納先へのポインター );
![]() |
リモートの IP アドレスの変化 |
|---|---|
POP3 サーバーとの接続の前後で、リモートの IP アドレスは変化する可能性があります。 | |
[ public, const ] VoidConstPtr GetResponseBuffer( UInt32Ptr size = null // バッファのサイズ );
POP3 サーバーが応答するバッファのサイズを格納する変数へのポインターです。取得する必要がない場合、null を指定します。
バッファの先頭には、POP3 サーバーの応答 ( "+OK" または "-ERR" ) と、追加メッセージが入っています。
単一行の応答のとき、バッファには "\r\n" は含まれていません。
複数行の応答のとき、バッファには最終行の ".\r\n" は含まれません。また、行頭のピリオドは削除して返します。
取得したバッファは、状態が変わらない限り有効です。 何らかのコマンドを送ったり、SFXPOP3::Close 関数を呼び出すと、状態は変更されバッファは無効になります。
[ public, const ] SFXAnsiString GetResponseText(Void);
[ public, const ] SFCError GetResponseText( SFXAnsiStringPtr result // POP3 サーバーから取得した応答テキストへのポインター );
POP3 サーバーから取得した応答テキストへのポインターです。
単一行の応答のとき、バッファには "\r\n" は含まれません。
複数行の応答のとき、バッファには最終行の ".\r\n" は含まれません。また、行頭のピリオドは削除して返します。
![]() |
応答テキストとは |
|---|---|
POP3 サーバーからの応答メッセージから、最初のステータス文字列 ( "+OK" または "-ERR" )とそれに続く空白文字が削除されたテキストのことです。 | |
[ public, const ] SFCError GetRetrResponse( ACharConstHandle response // RETR コマンドの応答へのポインターを格納するためのハンドル );
[ public, const ] SFCError GetRetrResponse( SFXAnsiStringPtr response // RETR コマンドの応答へのポインター );
RETR コマンドの応答へのポインターを格納するためのハンドル、または RETR コマンドの応答へのポインターです。
RETR コマンドは、メール メッセージを取得するためのコマンドです。
単一行の応答のとき、バッファには "\r\n" は含まれていません。
複数行の応答のとき、バッファには最終行の ".\r\n" は含まれません。また、行頭のピリオドは削除して返します。
![]() |
注意 |
|---|---|
| ACharConstHandle 型の response 引数の戻り値は、SFXPOP3 クラスの内部クラスのバッファへのポインターです。呼び出し側では、このバッファを解放してはいけません。 | |
[ public, const ] Bool GetSSLMode(Void);
[ public, const ] SFCError GetStatResponse( UInt32Ptr count = null // メール メッセージ数 UInt32Ptr size = null // メール メッセージの全サイズ );
メール メッセージの数を格納する変数へのポインターです。 取得する必要がない場合、null を指定します。
全てのメール メッセージの合計サイズを格納する変数へのポインターです。 取得する必要がない場合、null を指定します。
STAT コマンドは、メール メッセージの数とサイズを取得するためのコマンドです。
[ public, const ] SFCError GetTopResponse( ACharConstHandle response // TOP コマンドの応答へのポインター( ハンドル ) );
[ public, const ] SFCError GetTopResponse( SFXAnsiStringPtr response // TOP コマンドの応答へのポインター );
TOP コマンドの応答へのポインターです。
TOP コマンドは、メール メッセージのヘッダーと本文の一部を取得するためのコマンドです。
[ public, const ] UInt32 GetTrustMode(Void);
[ public, const ] SFCError GetUidlResponse( NumberUidlRecHandle recHandle // メッセージ番号と UIDL の配列 SInt32Ptr recCount // 配列の要素数 );
[ public, const ] SFCError GetUidlResponse( NumberUidlRecPtr rec // メッセージ番号と UIDL );
メール メッセージの番号と UIDL からなる構造体 SFXPOP3::NumberUidlRec の配列を返します。 recHandle は delete[] で破棄する必要があります。
recHandle 配列の要素数を返します。
メール メッセージの番号と UIDL からなる構造体 SFXPOP3::NumberUidlRecへのポインターを返します。
UIDL コマンドは、メール メッセージの UIDL を取得するためのコマンドです。
SFXPOP3::SendUidlCommand 関数の引数の数によって、使う関数が異なります。
2 つの引数 recHandle と recCount が必要です。全てのメール メッセージの番号と UIDL を取得します。
引数 rec のみ必要です。 SFXPOP3::SendUidlCommand 関数で指定したメール メッセージの番号の UIDL を取得します。
これらが対応していないと、SFXPOP3::GetUidlResponse 関数は失敗し、SFERR_INVALID_FORMAT を返します。 戻り値が SFERR_NO_ERROR 以外の場合、引数の値は不定となります。
[ public, const ] Bool IsResponseErr(Void);
[ public, const ] Bool IsResponseOk(Void);
[ public ] SFCError Open(Void);
内部で SFXTCPSocket クラスの SFXTCPSocket::Open 関数を呼び出します。
[ public ] SFCError SendApopCommand( SFXAnsiStringConstRef user // ユーザー名 SFXAnsiStringConstRef password // パスワード SFXAnsiStringConstRef challenge // チャレンジ コード );
ユーザー名です。
パスワードです。
APOP 認証のためのチャレンジ コードです。 EHLO コマンドの応答に含まれる、 < > で囲まれた文字列 ('<' や '>' 自身も含む)を渡します。
APOP コマンドは、APOP 認証のためのコマンドです。
SFXPOP3::SendApopCommand 関数は、SFXPOP3::Connect 関数で POP3 サーバーに接続した直後に呼び出します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendCommand( ACharConstPtr command // POP3 コマンド文字列 UInt32 size // POP3 コマンド文字列のサイズ Bool multiline // 複数行応答の POP3 コマンドかどうか );
[ public ] SFCError SendCommand( SFXAnsiStringConstRef command // POP3 コマンド文字列 Bool multiline // 複数行応答の POP3 コマンドかどうか );
POP3 コマンドの最後に "\r\n" を付加する必要があります。単一行または複数行の応答のコマンドであるかどうかは、引数で指定します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
SFXPOP3::SendApopCommand | SFXPOP3::SendDeleCommand | SFXPOP3::SendListCommand | SFXPOP3::SendNoopCommand | SFXPOP3::SendPassCommand | SFXPOP3::SendQuitCommand | SFXPOP3::SendRetrCommand | SFXPOP3::SendRsetCommand | SFXPOP3::SendStatCommand | SFXPOP3::SendTopCommand | SFXPOP3::SendUidlCommand | SFXPOP3::SendUserCommand | SFXPOP3::IsResponseOk | SFXPOP3::IsResponseErr | SFXPOP3::Connect
削除するメール メッセージの番号です。
DELE コマンドは、メール メッセージを削除するためのコマンドです。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendListCommand(Void);
[ public ] SFCError SendListCommand( SInt32 number // メール メッセージ 番号 );
サイズを取得するメール メッセージの番号です。 1 以上でなくてはなりません。
LIST コマンドは、メール メッセージのサイズを取得するためのコマンドです。
全てのメール メッセージのサイズを取得するには、引数なしで SFXPOP3::SendListCommand 関数を呼び出します。 特定のメール メッセージのサイズを取得するには、引数にそのメール メッセージ番号を指定します。 LIST コマンドの結果は、SFXPOP3::GetListResponse 関数で取得します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendNoopCommand(Void);
NOOP コマンドは、POP3 サーバーとの接続チェックをするためのコマンドです。
POP3 サーバーは NOOP コマンドを受け取ると、応答メッセージだけを返します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendPassCommand( SFXAnsiStringConstRef password // パスワード );
パスワードです。
PASS コマンドは、パスワードを設定するためのコマンドです。
SFXPOP3::SendPassCommand 関数は、SFXPOP3::SendUserCommand 関数でユーザー名を送信した直後に呼び出します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendQuitCommand(Void);
QUIT コマンドは、POP3 メール受信のセッションを終了するためのコマンドです。
![]() |
POP3 メール受信のセッションの終了 |
|---|---|
SFXPOP3::SendQuitCommand 関数で QUIT コマンドを POP3 サーバーに送信して、その応答を確認してから、SFXPOP3::Close 関数を呼び出して POP3 サーバーとの接続を切断します。 | |
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
取得するメールのメッセージ番号です。 1 以上でなくてはなりません。
RETR コマンドは、メール メッセージを取得するためのコマンドです。
RETR コマンドの結果は、SFXPOP3::GetRetrResponse 関数で取得します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendRsetCommand(Void);
RSET コマンドは、POP3 メール受信のセッションをリセットするためのコマンドです。
SFXPOP3::SendUserCommand 関数、SFXPOP3::SendPassCommand 関数の結果は破棄され、POP3 サーバーに接続したときの初期状態になります。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendStatCommand(Void);
STAT コマンドは、メール メッセージの数とサイズを取得するためのコマンドです。
STAT コマンドの結果は、SFXPOP3::GetStatResponse 関数で取得します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
取得するメール メッセージの番号です。 1 以上の整数でなくてはなりません。
取得する本文の行数です。 0を指定するとヘッダーのみの取得となります。
TOP コマンドは、メール メッセージのヘッダーと本文の一部を取得するためのコマンドです。
TOP コマンドの結果は、SFXPOP3::GetTopResponse 関数で取得します。
![]() |
通信エラー/コマンドエラーの取得 |
|---|---|
|
戻り値として返すのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかは、SFXPOP3::IsResponseOk 関数、SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendUidlCommand(Void);
[ public ] SFCError SendUidlCommand( SInt32 number // メール メッセージの番号 );
取得するメール メッセージの番号です。 1 以上の整数でなくてはなりません。
UIDL コマンドは、メール メッセージの UIDL を取得するためのコマンドです。
全メールの UIDL を取得する場合は、引数なしで SFXPOP3::SendUidlCommand 関数を呼び出します。 特定のメールの UIDL を取得する場合は、引数にメール メッセージ番号を指定します。 UIDL コマンドの結果は、SFXPOP3::GetUidlResponse 関数で取得します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
[ public ] SFCError SendUserCommand( SFXAnsiStringConstRef user // ユーザー名 );
ユーザー名です。
USER コマンドは、ユーザー名を設定するためのコマンドです。
SFXPOP3::SendUserCommand 関数は、SFXPOP3::Connect 関数で POP3 サーバーに接続してから呼び出します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXPOP3::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXPOP3::IsResponseOk 関数、または SFXPOP3::IsResponseErr 関数を使って判定します。 | |
POP3 サーバーとの接続を SSL 接続モードにするには、isSSL 引数を true に設定します。
typedef Void(* SFXPOP3::CallbackSPP)(SFCError error, VoidPtr data)
SFXPOP3 クラスで使うコールバック関数です。 SFXPOP3::Connect 関数で指定します。 メール受信処理の結果は、このコールバック関数に通知されます。
第 1 引数にエラーコード、第 2 引数は SFXPOP3::Connect 関数で指定した引数 ( 一般に SFXPOP3 クラスのインスタンス ) が渡されます。
SFMTYPEDEFSTRUCT(NumberSizeRec)
struct NumberSizeRec {
SInt32 number;
UInt32 size;
};
SFXPOP3::GetListResponse 関数で結果を返すために使う構造体です。 number はメール メッセージ の番号を示し、size はメッセージのサイズ ( オクテット数 ) を表します。
SFMTYPEDEFSTRUCT(NumberUidlRec)
struct NumberUidlRec {
SInt32 number;
SFXAnsiString uidl;
};
SFXPOP3::GetUidlResponse 関数で結果を返すために使われる構造体です。 number はメール メッセージの番号、uidl はメッセージの UIDL を表します。
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|