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

POP3 メール受信の手順
![]() |
前提条件 |
|---|---|
UIDL コマンドを実装した POP3 サーバーが前提となります。 | |
例 773. SFXPOP3Receiver クラスを使ってメールを受信する方法
class MyClass {
private:
SFXPOP3Receiver _receiver;
XALLBACK_DECLARE_SFXPOP3RECEIVER(POP3Callback)
public:
Void Start(Void);
};
Void MyClass::Start(Void)
{
// POP3 サーバーの IP アドレスとポート番号を指定する ( ドメインは自動解決される )
_receiver.SetServer(SFXSocketAddress("pop3server.example.com:110"));
// ユーザー名とパスワードを設定する
_receiver.SetAccount("user", "password");
// POP3Callback コールバック関数を登録し、メールを受信する
// メール受信の完了は POP3Callback 関数に通知される
if ((error = _receiver.Receive(XALLBACK_FUNCTION(POP3Callback)))
!= SFERR_NO_ERROR) {
// error が SFERR_NO_ERROR でない場合はコールバックが戻らないので、
// ここでエラー処理をする
}
}
// メール受信の完了が通知されるコールバック関数
XALLBACK_IMPLEMENT_SFXPOP3RECEIVER(MyClass, POP3Callback, error)
{
SInt32 i;
if (error == SFERR_NO_ERROR) {
//受信に成功した場合
// 受信したメールの配列 ( SFXArray ) を取得する
const SFXArray<SFXPOP3Receiver::MailInfoPtr>& mailArray =
receiver.GetReceivedMailArray();
// メール数を表示する
TRACE("received %d mails", mailArray.GetSize());
for (i = 0; i < mailArray.GetSize() ; i++) {
SFXPOP3Receiver::MailInfoPtr minfo = mailArray[i];
//左から順に、メール サイズ、UIDL、メールヘッダーとメール本文を含むメールメッセージを表示する
TRACE("%d, %s, %s", minfo->size, minfo->uidl.GetCString(), minfo->mail.GetCString());
}
}
}
SFXSMTP | SFXSMTPSender | SFXPOP3 | メール受信
| コンストラクタ/デストラクタ |
|---|
|
SFXPOP3Receiver( Void ) SFXPOP3Receiver クラスのコンストラクタです。
|
|
~SFXPOP3Receiver( Void ) SFXPOP3Receiver クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| Void |
Cancel( Void ) POP3 メール受信をキャンセルします。
|
| Void |
Clear( Void ) SFXPOP3Receiver クラスのインスタンスの内部変数を初期化します。
|
| SFCError |
Delete(
CallbackSPP spp
, VoidPtr reference
) Delete( UidlArrayPtr targetUidlArray , Bool invertTarget , CallbackSPP spp , VoidPtr reference ) Delete( SFXAnsiStringConstRef uidl , CallbackSPP spp , VoidPtr reference ) メールを削除します。
|
| ProgressEnum |
GetProgress( Void ) POP3 メール受信の進行状態を取得します。
|
| MailArrayConstRef |
GetReceivedMailArray( Void ) 受信したメールの配列を取得します。
|
| UidlArrayConstRef |
GetReceivedUidlArray( Void ) 受信したメールの UIDL 配列を取得します。
|
| SFXPOP3Ref |
GetSFXPOP3( Void ) 内部で使用している SFXPOP3 クラスのインスタンスを取得します。
|
| Bool |
GetSSLMode( Void ) SSL 接続モードを取得します。
|
| UInt32 |
GetTrustMode( Void ) SSL 認証モードを取得します。
|
| SFCError |
Receive(
CallbackSPP spp
, VoidPtr reference
) Receive( UidlArrayPtr targetUidlArray , Bool invertTarget , CallbackSPP spp , VoidPtr reference ) Receive( SFXAnsiStringConstRef targetUidl , CallbackSPP spp , VoidPtr reference ) メールを受信します。
|
| SFCError |
ReceiveAndDelete(
CallbackSPP spp
, VoidPtr reference
) ReceiveAndDelete( UidlArrayPtr targetUidlArray , Bool invertTarget , CallbackSPP spp , VoidPtr reference ) ReceiveAndDelete( SFXAnsiStringConstRef targetUidl , CallbackSPP spp , VoidPtr reference ) メールを受信し、削除します。
|
| SFCError |
SetAccount(
SFXAnsiStringConstRef user
, SFXAnsiStringConstRef password
, AuthEnum auth = AUTH_APOP_AND_USERPASS
) アカウント情報( ユーザー名とパスワード )を設定します。
|
| Void |
SetLimit(
UInt32 limit
) 受信するメールの制限数を設定します。
|
| Void |
SetNumberOfLines(
SInt32 number
) 受信するメールの制限行を設定します。
|
| Void |
SetSSLMode(
Bool isSSL
) SSL 接続のモードを設定します。
|
| Void |
SetServer(
SFXSocketAddressConstRef server
) POP3 サーバーの IP アドレスとポート番号を設定します。
|
| Void |
SetTrustMode(
UInt32 sslTrustMode
) SSL 認証モードを設定します。
|
| 型 |
|---|
|
AuthEnum POP3 通信の認証方式を表す定数です。
|
|
CallbackSPP コールバック関数のプロトタイプです。
|
|
MailArray 関数で取得する MailInfo 構造体の配列を表す型です。
|
|
MailInfo 受信したメールを表す構造体です。
|
|
ProgressEnum POP3 メール受信の進行状態を表す定数です。
|
|
UidlArray 関数で受信するメールの配列を表す型です。
|
[ public, explicit ] SFXPOP3Receiver(Void);
SFXPOP3Receiver クラスのコンストラクタです。
コンストラクタでインスタンスを作成した直後は、POP3 メール受信に必要なリソースは割り当てられていません。POP3 メール受信に必要なリソースは SFXPOP3Receiver::Receive 関数、またはSFXPOP3Receiver::Delete 関数を呼び出したときに確保されます。
[ public ] ~SFXPOP3Receiver(Void);
SFXPOP3Receiver クラスのデストラクタです。 POP3 メール受信中の場合、SFXPOP3Receiver::Cancel を呼び出して POP3 メール受信をキャンセルしてからインスタンスを破棄します。
[ public ] Void Cancel(Void);
POP3 メール受信を中断・終了し、確保したリソースを解放します。
[ public ] Void Clear(Void);
設定した POP3 サーバーの情報や、受信したメールなど SFXPOP3Receiver クラスのインスタンスの内部変数をすべて初期化します。
[ public ] SFCError Delete( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
[ public ] SFCError Delete( SFXAnsiStringConstRef uidl // 削除するメールの UIDL CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
[ public ] SFCError Delete( UidlArrayPtr targetUidlArray // 削除するメールの UIDL の配列 Bool invertTarget // 指定以外のメールを削除するかどうか CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
削除するメールの UIDL です。
ターゲットとなるメールの UIDL 配列です。 null を指定すると、POP3 サーバーにある全てのメールを指定したことになります。
デフォルトは null です。
指定した以外のメールを削除するかどうかを指定します。
false の場合、targetUidlArray で指定したメールを削除します。
true の場合、targetUidlArray で指定されないメールを削除します。
デフォルトは false です。
![]() |
POP3 メール削除処理の結果 |
|---|---|
POP3 メール削除処理の結果は、コールバック関数で取得します。SFXPOP3Receiver::Delete 関数の戻り値には反映されません。 | |
![]() |
UIDL ( Unique-ID Listing ) について |
|---|---|
[ public, const ] ProgressEnum GetProgress(Void);
POP3 メール受信が失敗したとき、コールバック関数から SFXPOP3Receiver::GetProgress 関数を呼び出すと、POP3 メール受信エラーが起こった段階を取得できます。
[ public, const ] MailArrayConstRef GetReceivedMailArray(Void);
メール ( SFXPOP3Receiver::MailInfo へのポインタ ) の SFXArray 配列を返します。
SFXPOP3Receiver::Receive 関数を呼び出してから使います。
[ public, const ] UidlArrayConstRef GetReceivedUidlArray(Void);
受信したメールの UIDL 配列を返します。
[ public ] SFXPOP3Ref GetSFXPOP3(Void);
内部で使用している SFXPOP3 クラスのインスタンスです。
[ public, const ] Bool GetSSLMode(Void);
[ public, const ] UInt32 GetTrustMode(Void);
[ public ] SFCError Receive( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
[ public ] SFCError Receive( SFXAnsiStringConstRef targetUidl // 受信するメールの UIDL CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
[ public ] SFCError Receive( UidlArrayPtr targetUidlArray // 受信するメールの UIDL の配列 Bool invertTarget // 指定以外のメールを取得するかどうか CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
受信するメールの UIDL を指定します。
ターゲットとなるメールの UIDL 配列です。
null を指定した場合、POP3 サーバーにある全てのメールを指定したことになります。
デフォルトは null です。
指定した以外のメールを受信するかどうかを指定します。
false の場合、targetUidlArray で指定したメールを受信します。
true の場合、targetUidlArray で指定されないメールを受信します。
デフォルトは false です。
受信したメールは、SFXPOP3Receiver::GetReceivedMailArray 関数で得られる SFXPOP3Receiver::MailInfo の配列から取得します。
![]() |
POP3 メール受信処理の結果 |
|---|---|
POP3 メール受信処理の結果は、コールバック関数に通知されます。 SFXPOP3Receiver::Receive 関数の戻り値には反映されません。 | |
![]() |
UIDL ( Unique-ID Listing ) について |
|---|---|
[ public ] SFCError ReceiveAndDelete( CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
[ public ] SFCError ReceiveAndDelete( SFXAnsiStringConstRef targetUidl // 受信するメールの UIDL CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
[ public ] SFCError ReceiveAndDelete( UidlArrayPtr targetUidlArray // 受信するメールの UIDL の配列 Bool invertTarget // 指定以外のメールを取得するかどうか CallbackSPP spp // コールバック関数 VoidPtr reference // コールバック関数に渡すデータ );
受信するメールの UIDL を指定します。
ターゲットとなるメールの UIDL 配列です。
サーバーの全メールを対象とする場合、null を指定します。
デフォルトは null です。
targetUidlArray で指定したメールを受信するかどうかを指定します。
false の場合、targetUidlArray で指定したメールを受信します。
true の場合、targetUidlArray で指定されないメールを受信します。
デフォルトは false です。
SFXPOP3Receiver::Receive 関数でメールを受信し、SFXPOP3Receiver::Delete 関数でメールを削除するよりも効率的です。
受信したメールは、SFXPOP3Receiver::GetReceivedMailArray 関数で得られる SFXPOP3Receiver::MailInfo の配列から取得できます。
![]() |
POP3 メール受信処理の結果 |
|---|---|
POP3 メールの受信処理の結果は、コールバック関数に通知されます。 SFXPOP3Receiver::ReceiveAndDelete 関数の戻り値には反映されません。 | |
![]() |
UIDL ( Unique-ID Listing ) について |
|---|---|
[ public ] SFCError SetAccount( SFXAnsiStringConstRef user // ユーザー名 SFXAnsiStringConstRef password // パスワード AuthEnum auth = AUTH_APOP_AND_USERPASS // 認証方式 );
ユーザー名です。
パスワードです。
SFXPOP3Receiver::SetAccount 関数は、SFXPOP3Receiver::Receive 関数、または SFXPOP3Receiver::Delete 関数を呼び出す前に使います。
SetLimit 関数で制限した数までのメールを受信できます。
先頭から SetNumberOfLines 関数で設定した行数だけメールを受信します。
SSL 接続を使うには isSSL パラメータを true に設定します。
[ public ] Void SetServer( SFXSocketAddressConstRef server // POP3 サーバーの IP アドレスとポート番号 );
POP3 サーバーの IP アドレスとポート番号です。
SFXPOP3Receiver::Receive 関数、SFXPOP3Receiver::Delete 関数、SFXPOP3Receiver::ReceiveAndDelete 関数を呼び出す前に使います。
SFXPOP3Receiver::SetAccount | SFXPOP3Receiver::Receive | SFXPOP3Receiver::Delete | SFXPOP3Receiver::ReceiveAndDelete
SSL認証方法には以下の 4 つがあります。
enum AuthEnum {
AUTH_APOP_AND_USERPASS,
AUTH_ONLY_APOP,
AUTH_ONLY_USERPASS
};
SFXPOP3Receiver::SetAccount 関数で設定する POP3 通信の認証方式を表す定数として、以下の値があります。
APOP 認証を行います。APOP 認証に失敗した場合は、通常の user-password 認証を行います。
APOP 認証だけを行います。
通常の user-password 認証だけを行います。
typedef Void(* SFXPOP3Receiver::CallbackSPP)(SFCError error, VoidPtr reference)
SFXPOP3Receiver クラスで使うコールバック関数です。
このコールバック関数は SFXPOP3Receiver::Receive または SFXPOP3Receiver::Delete 関数を使って登録します。
メール受信処理の結果は、このコールバック関数から取得します。
第 1 引数の error には、POP3 メール受信に成功した場合は SFERR_NO_ERROR、失敗した場合はその他のエラーコードが設定されます。
第 2 引数の reference には、SFXPOP3Receiver::Receive または SFXPOP3Receiver::Delete 関数で指定したパラメータ( 通常、SFXPOP3Receiver クラスのインスタンス)を指定します。
SFMTYPEDEFALIAS(SFXArray<MailInfoPtr>, MailArray)
SFXArray<MailInfoPtr> と同義です。
struct MailInfo {
UInt32 size;
SFXAnsiString uidl;
SFXAnsiString mail;
};
size はメールのサイズを、uidl はメールの UIDL を、mail はメールのデータを表します。
SFXPOP3Receiver::GetReceivedMailArray 関数で取得します。
![]() |
UIDL ( Unique-ID Listing ) について |
|---|---|
enum ProgressEnum {
PROGRESS_NONE,
PROGRESS_CONNECT,
PROGRESS_USER,
PROGRESS_PASS,
PROGRESS_LIST,
PROGRESS_UIDL,
PROGRESS_TOP,
PROGRESS_RETR,
PROGRESS_DELE,
PROGRESS_QUIT,
PROGRESS_DONE
};
SFXPOP3Receiver クラスによる POP3 メール受信の進行状態を表す定数です。
SFXPOP3Receiver::GetProgress 関数を使って以下の状態を取得できます。
接続は開始されていません。
POP3 サーバーに接続中です。
USER コマンドの応答を待っています。
PASS コマンドの応答を待っています。
LIST コマンドの応答を待っています。
UIDL コマンドの応答を待っています。
RETR コマンドの応答を待っています。
TOP コマンドの応答を待っています。
DELE コマンドの応答を待っています。
QUIT コマンドの応答を待っています。
メール受信処理がすべて完了した状態です。
SFMTYPEDEFALIAS(SFXArray<SFXAnsiStringPtr>, UidlArray)
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|