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

SMTP メール送信の手順
※ HELO や EHLO などのコマンドの場合、送信用に SFXSMTP::SendHeloCommand 関数、SFXSMTP::SendEhloCommand 関数、 応答用に SFXSMTP::GetHeloResponse 関数、SFXSMTP::GetEhloResponse 関数などが特別に用意されています。
![]() |
SMTP プロトコルに関する詳細情報 |
|---|---|
SMTP の仕様 : RFC2821 ( Simple Mail Transfer Protocol ) | |
| コンストラクタ/デストラクタ |
|---|
|
SFXSMTP( Void ) SFXSMTP クラスのコンストラクタです。
|
|
~SFXSMTP( Void ) SFXSMTP クラスのデストラクタです。
|
| 型 |
|---|
|
AuthEnum SMTP 認証方式を表す定数です。
|
|
CallbackSPP コールバック関数のプロトタイプです。
|
[ public, explicit ] SFXSMTP(Void);
SFXSMTP クラスのインスタンスを生成しただけでは、SMTP メール送信に必要なリソースは割り当てられていません。 SFXSMTP::Open 関数を呼び出すと、SMTP メール送信に必要なリソースが確保されます。
[ public, virtual ] ~SFXSMTP(Void);
SFXSMTP クラスのインスタンスを破棄する前に、SFXSMTP::Close 関数を呼び出す必要があります。
[ public ] Void Cancel(Void);
内部で使う SFXTCPSocket クラスの SFXTCPSocket::Cancel 関数を呼び出します。
[ public ] Void Close(Void);
通信中であれば通信がキャンセルされ、通信のためのリソースは解放されます。
![]() |
SMTP サーバーとの接続の切断方法 |
|---|---|
SFXSMTP::SendQuitCommand 関数で QUIT コマンドを送信し、SMTP サーバーからの応答を確認してから、SFXSMTP::Close 関数で SMTP サーバーとの接続を切断します。 | |
[ public ] SFCError Connect( SFXSocketAddressConstRef address // SMTP サーバーの IP アドレスとポート番号 CallbackSPP spp // コールバック関数 VoidPtr reference // コールバックへの引数 );
SMTP サーバーの IP アドレスとポート番号を指定します。
![]() |
SMTP サーバーとの接続エラー |
|---|---|
SMTP サーバーとの接続に関するエラーはコールバック関数に通知されます。 | |
[ public, const ] SFCError GetEhloResponse( SFXAnsiStringPtr domain // ドメイン名 SFXAnsiStringPtr greet // グリーティング メッセージ SFXAnsiStringHandle extList // 拡張コマンド UInt32Ptr extCount // 拡張コマンドの数 );
SMTP サーバーが応答するドメイン名が格納される変数へのポインターです。 取得する必要がない場合、null を指定します。
SMTP サーバーが応答するグリーティング メッセージが格納される変数へのポインターです。 取得する必要がない場合、null を指定します。
SMTP サーバーが応答する拡張コマンドのリストへのポインターを格納するハンドルです。 SFXAnsiString の配列が渡されます。 配列は、呼び出し側が delete[] で解放する必要があります。 取得する必要がない場合、null を指定します。
SMTP サーバーが応答する拡張コマンドの数が格納される変数へのポインターです。 取得する必要がない場合、null を指定します。
ELHO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。
>SFXSMTP::GetEhloResponse 関数は、SFXSMTP::SendEhloCommand 関数によって送信される ELHO コマンドの応答を取得します。
[ public, const ] SFCError GetHeloResponse( SFXAnsiStringPtr domain // ドメイン名 SFXAnsiStringPtr greet // グリーティング メッセージ );
SMTP サーバーが応答するドメイン名が格納される変数へのポインターです。 取得する必要がない場合は、null を指定します。
SMTP サーバーが応答するグリーティング メッセージが格納される変数へのポインターです。 取得する必要がない場合は、null を指定します。
HELO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。
SFXSMTP::GetHeloResponse 関数は、SFXSMTP::SendHeloCommand 関数によって送信される HELO コマンドの応答を取得します。
[ public, const ] SFCError GetLocalAddress( SFXSocketAddressPtr result // ローカルの IP アドレスとポート番号の格納先へのポインター );
![]() |
ローカルの IP アドレスの変化 |
|---|---|
SMTP サーバーとの接続前後で、ローカルの IP アドレスは変化する可能性があります。 | |
[ public, const ] SFCError GetRemoteAddress( SFXSocketAddressPtr result // リモートの IP アドレスとポート番号の格納先へのポインター );
![]() |
リモートの IP アドレスの変化 |
|---|---|
SMTP サーバーとの接続の前後で、リモートの IP アドレスは変化する可能性があります。 | |
[ public, const ] SInt32 GetResponseCode(Void);
10 進数 3 桁の応答コードを返します。
SMTP コマンドの応答コードに関する詳細情報 : RFC2821 ( Simple Mail Transfer Protocol )
[ public, const ] SFXAnsiString GetResponseText(Void);
[ public, const ] SFCError GetResponseText( SFXAnsiStringPtr result // 応答テキストの格納先へのポインター );
SMTP サーバーから取得した応答テキストへのポインターです。
![]() |
応答テキストとは |
|---|---|
SMTP サーバーからの応答メッセージから、行頭の応答コードとそれに続く空白文字またはハイフン("-")が削除されたテキストのことです。 | |
[ public, const ] Bool GetSSLMode(Void);
[ public, const ] UInt32 GetTrustMode(Void);
[ public ] SFCError Open(Void);
内部で SFXTCPSocket クラスの SFXTCPSocket::Open 関数を呼び出します。
[ public ] SFCError SendAuthCommand( AuthEnum auth // 認証方式 );
認証方式を指定します。
AUTH コマンドは、SMTP 認証のためのコマンドです。
EHLO コマンドの応答を受信してから、AUTH コマンドを SMTP サーバーに送ります。 利用可能な認証方式は、PLAIN、LOGIN、CRAM-MD5 です。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
CRAM-MD5 認証を行います。
smtp.SendAuthCommand(SFXSMTP::AUTH_CRAM_MD5);
SFXSMTP::SendAuthResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect
[ public ] SFCError SendAuthResponse( SFXAnsiStringConstRef str1 // 文字列 1 ( 認証方式によって異なります ) SFXAnsiStringConstRef str2 = SFXAnsiString::EmptyInstance() // 文字列 2 ( 認証方式によって異なります ) SFXAnsiStringConstRef str3 = SFXAnsiString::EmptyInstance() // 文字列 3 ( 認証方式によって異なります ) );
AUTH コマンドは、SMTP 認証のためのコマンドです。
AUTH コマンドを SFXSMTP::SendAuthCommand 関数で送信した後、SMTP サーバーからの応答に対して返答を送ります。 ( ※ 認証方式によって、引数が異なります。)
PLAIN の場合
LOGINの場合 : 1回目にSendAuthResponse(user)を実行します。SMTP サーバーから応答があった後、 2回目にSendAuthResponse(password)を実行します。
CRAM-MD5 の場合
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
CRAM-MD5 認証を行います。
smtp.SendAuthResponse("user", "password", smtp.GetResponseText());
SFXSMTP::SendAuthResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect
[ public ] SFCError SendCommand( ACharConstPtr command // SMTP コマンド UInt32 size // SMTP コマンドの長さ );
[ public ] SFCError SendCommand( SFXAnsiStringConstRef command // SMTP コマンド );
SMTP サーバーに送る SMTP コマンドです。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
[ public ] SFCError SendDataCommand(Void);
DATA コマンドは、メール本文を送信する直前に送信するコマンドです。
SMTP サーバーがこのコマンドを受け取ると、応答コードとして、メール本文の送信を促す 354 を返します。 そして SFXSMTP::SendDataText 関数を使ってメール本文を送信します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
[ public ] SFCError SendDataText( SFXAnsiStringConstRef text // メール );
メールの本文です。
メール ヘッダーとメール本文からなるメール テキストを送信します。 メール ヘッダーには、送信元ホスト名、送信元メール アドレス、送信先メール アドレスなどの情報が含まれます。
SFXSMTP::SendDataCommand 関数が成功した直後に送る必要があります。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数で取得します。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
SFXSMTP::SendDataCommand | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect
[ public ] SFCError SendEhloCommand( SFXAnsiStringConstRef hostName // ホスト名 );
接続するクライアントのホスト名です。
ELHO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。
応答メッセージは SFXSMTP::GetEhloResponse 関数で取得します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
SFXSMTP::GetEhloResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect
[ public ] SFCError SendHeloCommand( SFXAnsiStringConstRef hostName // ホスト名 );
接続するクライアントのホスト名です。
HELO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。
応答メッセージは SFXSMTP::GetHeloResponse 関数で取得します。 HELO コマンドは古いサーバーとの互換性のために用意されており、使用は推奨されていません。 通常は ELHO コマンド ( SFXSMTP::SendEhloCommand 関数 )を使います。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
SFXSMTP::SendEhloCommand | SFXSMTP::GetHeloResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect
[ public ] SFCError SendMailCommand( SFXAnsiStringConstRef from // 送信元アドレス );
メールの送信元アドレスです。<> で囲む必要があります。
MAIL コマンドは、メール メッセージの送信元アドレスを設定するためのコマンドです。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
[ public ] SFCError SendNoopCommand(Void);
NOOP コマンドは、SMTP サーバーとの接続チェックをするためのコマンドです。
SMTP サーバーは NOOP コマンドを受け取ると、応答メッセージだけを返します。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
[ public ] SFCError SendQuitCommand(Void);
QUIT コマンドは、SMTP メール送信のセッションを終了するためのコマンドです。
![]() |
SMTP サーバーとの接続の切断 |
|---|---|
SFXSMTP::SendQuitCommand 関数で QUIT コマンドを SMTP サーバーに送信し、SMTP サーバーから応答を確認してから、SFXSMTP::Close 関数を呼び出して SMTP サーバーとの接続を切断します。 | |
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
[ public ] SFCError SendRcptCommand( SFXAnsiStringConstRef to // 送信先アドレス );
メールの送信先アドレスです。<> で囲む必要があります。
RCPT コマンドは、メール メッセージの送信先を設定するためのコマンドです。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
[ public ] SFCError SendRsetCommand(Void);
RSET コマンドは、SMTP メール送信のセッションをリセットするためのコマンドです。
![]() |
通信エラー / コマンド エラーの取得 |
|---|---|
|
戻り値として返るのは、内部処理でのエラーだけです。 通信エラーなどは SFXSMTP::Connect 関数で指定したコールバック関数に通知されます。 コマンドが成功したかどうかは、SFXSMTP::GetResponseCode 関数を使って判定します。 | |
SMTP サーバーとの接続を SSL 接続モードにするには、isSSL 引数を true に設定します。
enum AuthEnum {
AUTH_NONE,
AUTH_PLAIN,
AUTH_LOGIN,
AUTH_CRAM_MD5,
AUTH_DIGEST_MD5
};
SMTP 認証方式は、SFXSMTPSender::SetAuthorization 関数を使って下記の定数で指定します。
SMTP 認証を使わないことを表します。
PLAIN 認証を表します。
LOGIN 認証を表します。
CRAM-MD5 認証を表します。
DIGEST-MD5 認証を表します。( 現在のバージョンでは、サポートされていません。)
typedef Void(* SFXSMTP::CallbackSPP)(SFCError error, VoidPtr reference)
SFXSMTP クラスで使うコールバック関数です。 SFXSMTP::Connect 関数で指定します。 メール送信処理の結果は、このコールバック関数に通知されます。
第 1 引数にエラーコード、第 2 引数は SFXSMTP::Connect 関数で指定した引数 ( 一般に SFXSMTP クラスのインスタンス ) が渡されます。
|
Copyright (C) 2002 - 2009 Sophia Cradle, Inc. All Rights Reserved. |
![]() ![]() ![]()
|