SophiaFramework UNIVERSE 5.3 |
SFXSMTP クラスは、SMTP プロトコルを処理するためのクラスです。
注意 | |
---|---|
SFXSMTP クラスは、 SFXSMTPSender クラスを実装するときに使用される内部実装クラスです。 SFXSMTPSender クラスに代わる開発者独自のメール送信クラスを実装する場合に使用します。 |
SMTP メール送信の手順
(SMTP 認証を行う場合のみ): コールバック関数の中で SFXSMTP::SendAuthCommand 関数により AUTH コマンドを発行し、 SMTP 認証を行います。 SMTP サーバーからの応答は、 SFXSMTP::Connect 関数の引数に指定したコールバック関数に通知されます。
そして、コールバック関数の中で SMTP 認証の種類に応じて SFXSMTP::SendAuthResponse 関数により AUTH コマンドの応答に対する返答を送信します。 SMTP サーバーからの応答は、SFXSMTP::Connect 関数の引数に指定したコールバック関数に通知されます。
タイムアウトの制御 | |
---|---|
タイムアウトの制御は、アプリケーション側で行います。 |
SMTP プロトコルについて | |
---|---|
SMTP プロトコルの仕様は、 RFC2821(Simple Mail Transfer Protocol) を参照してください。 |
例 843. SFXSMTPSender クラスの実装
/*************************************************************************************** **************************************************************************************** *** *** File : SFXSMTPSender.f.hpp *** **************************************************************************************** ****************************************************************************************/ #ifndef __SOPHIAFRAMEWORK_SFXSMTPSENDER_FHPP #define __SOPHIAFRAMEWORK_SFXSMTPSENDER_FHPP #include <SFXGeneral/SFXEnvironment.h.hpp> SFMTYPEDEFCLASS(SFXSMTPSENDER) #endif // __SOPHIAFRAMEWORK_SFXSMTPSENDER_FHPP // /*************************************************************************************** **************************************************************************************** *** *** File : SFXSMTPSender.h.hpp *** **************************************************************************************** ****************************************************************************************/ #ifndef __SOPHIAFRAMEWORK_SFXSMTPSENDER_HHPP #define __SOPHIAFRAMEWORK_SFXSMTPSENDER_HHPP #include <SFXGeneral/SFXEnvironment.h.hpp> #include <SFXProtocol/SFXMail/SFXSMTPSender.f.hpp> #include <SFXProtocol/SFXMail/SFXSMTP.h.hpp> #include <SFXCollection/SFXArray.h.hpp> #include <SFXProtocol/SFXMail/SFXMailMessage.f.hpp> class SFXSMTPSender { SFMSEALCOPY(SFXSMTPSender) public: enum ProgressEnum { PROGRESS_NONE = 0, PROGRESS_CONNECT, PROGRESS_EHLO, PROGRESS_HELO, PROGRESS_AUTH, PROGRESS_AUTHRESP1, PROGRESS_AUTHRESP2, PROGRESS_MAIL, PROGRESS_RCPT, PROGRESS_DATA, PROGRESS_DATATEXT, PROGRESS_QUIT, PROGRESS_ERRORQUIT, PROGRESS_DONE }; enum AuthEnum { AUTH_NONE = 0, AUTH_PLAIN, AUTH_LOGIN, AUTH_CRAM_MD5, AUTH_DIGEST_MD5 }; private: enum StateEnum { STATE_STANDBY = 0, STATE_SENDING }; public: typedef Void (*CallbackSPP) (SFCError error, VoidPtr reference); private: StateEnum _state; ProgressEnum _progress; ProgressEnum _previous; CallbackSPP _spp; VoidPtr _reference; AuthEnum _auth; SFXAnsiString _user; SFXAnsiString _password; SFXSocketAddress _server; SFXAnsiString _client; SFXAnsiString _from; SFXArray<SFXAnsiStringPtr> _toList; SFXAnsiString _message; SFXSMTP _smtp; SInt16 _index; Bool _quit; Bool _isSSL; UInt32 _sslTrustMode; public: explicit SFXSMTPSender (Void); ~SFXSMTPSender (Void); SFXSMTPRef GetSFXSMTP (Void); ProgressEnum GetProgress (Void) const; Void SetSSLMode (Bool isSSL); Bool GetSSLMode (Void) const; Void SetTrustMode (UInt32 sslTrustMode); UInt32 GetTrustMode (Void) const; Void Cancel (Void); SFCError SetHostName (SFXAnsiStringConstRef host); SFCError SetServer (SFXSocketAddressConstRef server); SFCError SetAuthorization (SFXSMTPSender::AuthEnum auth, SFXAnsiStringConstRef user, SFXAnsiStringConstRef password); SFCError SetFrom (SFXAnsiStringConstRef from); Void ClearTo (Void); SFCError AddTo (SFXAnsiStringConstRef to); SFCError SendMessage (SFXMailMessagePtr message, CallbackSPP spp, VoidPtr reference); SFCError SendText (SFXAnsiStringConstRef text, CallbackSPP spp, VoidPtr reference); Bool IsQuit (Void); private: SFCError ProceedConnect (UInt16 code); SFCError ProceedEhlo (UInt16 code); SFCError ProceedHelo (UInt16 code); SFCError ProceedAuth (UInt16 code); SFCError ProceedAuthresp1 (UInt16 code); SFCError ProceedAuthresp2 (UInt16 code); SFCError ProceedMail (UInt16 code); SFCError ProceedRcpt (UInt16 code); SFCError ProceedData (UInt16 code); SFCError ProceedDataText (UInt16 code); Void ProceedError (Void); Void FinishSend (SFCError err); SFCError SetBrackets (SFXAnsiStringConstRef string, SFXAnsiStringPtr result); XALLBACK_DECLARE_SFXSMTP(OnSMTP) }; #define XALLBACK_DECLARE_SFXSMTPSENDER(FUNCTION) XALLBACK_DECLARE_SFXSMTP(FUNCTION) #include <SFXProtocol/SFXMail/SFXSMTPSender.i.hpp> #endif // __SOPHIAFRAMEWORK_SFXSMTPSENDER_HHPP // /*************************************************************************************** **************************************************************************************** *** *** File : SFXSMTPSender.i.hpp *** **************************************************************************************** ****************************************************************************************/ #ifndef __SOPHIAFRAMEWORK_SFXSMTPSENDER_IHPP #define __SOPHIAFRAMEWORK_SFXSMTPSENDER_IHPP #include <SFXGeneral/SFXEnvironment.h.hpp> /*public */inline SFXSMTPRef SFXSMTPSender::GetSFXSMTP(Void) { return _smtp; }// SFXSMTPSender::GetSFXSMTP // /*public */inline SFXSMTPSender::ProgressEnum SFXSMTPSender::GetProgress(Void) const { return _progress; }// SFXSMTPSender::GetProgress // /*public */inline Void SFXSMTPSender::SetSSLMode(Bool isSSL) { _isSSL = isSSL; return; }// SFXSMTPSender::SetSSLMode // /*public */inline Bool SFXSMTPSender::GetSSLMode(Void) const { return _isSSL; }// SFXSMTPSender::GetSSLMode // /*public */inline Void SFXSMTPSender::SetTrustMode(UInt32 sslTrustMode) { _sslTrustMode = sslTrustMode; return; }// SFXSMTPSender::SetTrustMode // /*public */inline UInt32 SFXSMTPSender::GetTrustMode(Void) const { return _sslTrustMode; }// SFXSMTPSender::GetTrustMode // /*public */inline SFCError SFXSMTPSender::SetHostName(SFXAnsiStringConstRef host) { return _client.Set(host); }// SFXSMTPSender::SetHostName // /*public */inline SFCError SFXSMTPSender::SetServer(SFXSocketAddressConstRef server) { return _server.Set(server); }// SFXSMTPSender::SetServer // /*public */inline SFCError SFXSMTPSender::SetFrom(SFXAnsiStringConstRef from) { return _from.Set(from); }// SFXSMTPSender::SetFrom // /*public */inline Bool SFXSMTPSender::IsQuit(Void) { return _quit; }// SFXSMTPSender::IsQuit // #define XALLBACK_IMPLEMENT_SFXSMTPSENDER(TYPE, FUNCTION, ERROR) XALLBACK_IMPLEMENT_SFXSMTP(TYPE, FUNCTION, ERROR) #endif // __SOPHIAFRAMEWORK_SFXSMTPSENDER_IHPP // /*************************************************************************************** **************************************************************************************** *** *** File : SFXSMTPSender.i.cpp *** **************************************************************************************** ****************************************************************************************/ #include <SFXProtocol/SFXMail/SFXSMTPSender.h.hpp> #include <SFXProtocol/SFXMail/SFXMailMessage.h.hpp> #include <SFXProtocol/SFXMail/SFXMailUtility.h.hpp> /*public */SFXSMTPSender::SFXSMTPSender(Void) : _state(STATE_STANDBY), _progress(PROGRESS_NONE), _auth(AUTH_NONE), _quit(false), _isSSL(false), _sslTrustMode(SSL_TRUST_MODE_FAIL) { }// SFXSMTPSender::SFXSMTPSender // /*public */SFXSMTPSender::~SFXSMTPSender(Void) { Cancel(); }// SFXSMTPSender::~SFXSMTPSender // /*public */Void SFXSMTPSender::Cancel(Void) { _state = STATE_STANDBY; _progress = PROGRESS_NONE; _spp = null; _reference = null; _server.Set(0, 0); _from.Clear(); ClearTo(); _message.Clear(); _smtp.Close(); }// SFXSMTPSender::Cancel // /*public */SFCError SFXSMTPSender::SetAuthorization(SFXSMTPSender::AuthEnum auth, SFXAnsiStringConstRef user, SFXAnsiStringConstRef password) { SFCError error; if ((error = _user.Set(user)) == SFERR_NO_ERROR) { if ((error = _password.Set(password)) == SFERR_NO_ERROR) { _auth = auth; } } return error; }// SFXSMTPSender::SetAuthorization // /*public */Void SFXSMTPSender::ClearTo(Void) { SFXArray<SFXAnsiStringPtr>::Iterator itor; SFXAnsiStringPtr string; itor = _toList.GetFirstIterator(); while (itor.HasNext()) { string = itor.GetNext(); ::delete string; } _toList.Clear(); }// SFXSMTPSender::ClearTo // /*public */SFCError SFXSMTPSender::AddTo(SFXAnsiStringConstRef to) { SFCError error; SFXAnsiStringPtr string; if ((string = ::new SFXAnsiString(to)) != null) { error = _toList.InsertLast(string); } else { error = SFERR_NO_MEMORY; } return error; }// SFXSMTPSender::AddTo // /*public */SFCError SFXSMTPSender::SendMessage(SFXMailMessagePtr message, CallbackSPP spp, VoidPtr reference) { SFCError error(SFERR_NO_ERROR); SFBNetMgrSmp net; SFXAnsiString temp; SInt32 r0, r1; SFXProperty property; SFXAnsiStringPtr mail; if (!_server.Get().IsEmpty()) { if (error == SFERR_NO_ERROR) { if (_from.IsEmpty()) { _from = message->GetFromField(); } if (_toList.IsEmpty()) { if ((error = SFXMailUtility::ParseMailboxList(message->GetToField(), &property)) == SFERR_NO_ERROR) { if ((error = SFXMailUtility::ParseMailboxList(message->GetCcField(), &property)) == SFERR_NO_ERROR) { if ((error = SFXMailUtility::ParseMailboxList(message->GetBccField(), &property)) == SFERR_NO_ERROR) { r1 = property.GetSize(); for (r0 = 0; r0 < r1; ++r0) { if ((mail = ::new SFXAnsiString) != null) { if ((error = mail->Set(property.GetValue(r0))) == SFERR_NO_ERROR) { if ((error = _toList.InsertLast(mail)) != SFERR_NO_ERROR) { break; } } else { break; } } else { error = SFERR_NO_MEMORY; break; } } } } } } } if (error == SFERR_NO_ERROR) { if (message->GetBccField().IsEmpty()) { error = _message.Set(message->Write()); } else { if ((error = temp.Set(message->Write())) == SFERR_NO_ERROR) { if ((r0 = temp.FirstIndexOf("BCC:", SINT32_MINIMUM, false)) > -1) { r1 = temp.FirstIndexOf("\r\n", r0); if ((error = _message.Set(temp.Substring(0, r0))) == SFERR_NO_ERROR) { error = _message.Add(temp.Substring(r1 + 2, temp.GetLength())); } } else { error = SFERR_FAILED; } } } } if (error == SFERR_NO_ERROR) { if (!_from.IsEmpty() && !_toList.IsEmpty()) { _smtp.Close(); if ((error = _smtp.Open()) == SFERR_NO_ERROR) { _smtp.SetSSLMode(_isSSL); if ((error = _smtp.SetTrustMode(_sslTrustMode)) == SFERR_NO_ERROR) { if ((error = _smtp.Connect(_server, XALLBACK_INTERNAL(OnSMTP))) == SFERR_NO_ERROR) { _state = STATE_SENDING; _progress = PROGRESS_CONNECT; _spp = spp; _reference = reference; _quit = false; } } if (error != SFERR_NO_ERROR) { _smtp.Close(); } } } else { error = SFERR_INVALID_PARAM; } } } else { error = SFERR_FAILED; } return error; }// SFXSMTPSender::SendMessage // /*public */SFCError SFXSMTPSender::SendText(SFXAnsiStringConstRef text, CallbackSPP spp, VoidPtr reference) { SFCError error(SFERR_NO_ERROR); _message.Set(text); // temp if (!_client.IsEmpty() && !_from.IsEmpty() && !_toList.IsEmpty()) { _smtp.Close(); if ((error = _smtp.Open()) == SFERR_NO_ERROR) { _smtp.SetSSLMode(_isSSL); if ((error = _smtp.SetTrustMode(_sslTrustMode)) == SFERR_NO_ERROR) { if ((error = _smtp.Connect(_server, XALLBACK_INTERNAL(OnSMTP))) == SFERR_NO_ERROR) { _state = STATE_SENDING; _progress = PROGRESS_CONNECT; _spp = spp; _reference = reference; _quit = false; } } if (error != SFERR_NO_ERROR) { _smtp.Close(); } } } else { error = SFERR_INVALID_PARAM; } return error; }// SFXSMTPSender::SendText // /*private */XALLBACK_IMPLEMENT_SFXSMTP(SFXSMTPSender, OnSMTP, error) { SIntN code; if (error == SFERR_NO_ERROR) { code = _smtp.GetResponseCode(); switch (_progress) { case PROGRESS_CONNECT: error = ProceedConnect(code); break; case PROGRESS_EHLO: error = ProceedEhlo(code); break; case PROGRESS_HELO: error = ProceedHelo(code); break; case PROGRESS_AUTH: error = ProceedAuth(code); break; case PROGRESS_AUTHRESP1: error = ProceedAuthresp1(code); break; case PROGRESS_AUTHRESP2: error = ProceedAuthresp1(code); break; case PROGRESS_MAIL: error = ProceedMail(code); break; case PROGRESS_RCPT: error = ProceedRcpt(code); break; case PROGRESS_DATA: error = ProceedData(code); break; case PROGRESS_DATATEXT: error = ProceedDataText(code); break; case PROGRESS_ERRORQUIT: _progress = PROGRESS_DONE; FinishSend(_previous); break; case PROGRESS_QUIT: _progress = PROGRESS_DONE; FinishSend(SFERR_NO_ERROR); break; case PROGRESS_DONE: case PROGRESS_NONE: default: FinishSend(PROGRESS_NONE); break; } } if (error != SFERR_NO_ERROR) { FinishSend(_progress); } }// XALLBACK_IMPLEMENT_SFXSMTP(SFXSMTPSender, OnSMTP, error) // /*private */SFCError SFXSMTPSender::ProceedConnect(UInt16 code) { SFCError error(SFERR_NO_ERROR); SFXInetAddress address; if (code == 220) { _progress = PROGRESS_EHLO; if (_client.IsEmpty()) { address = SFXInetAddress::LocalInetAddress(); if (!address.Get().IsEmpty()) { error = _client.Set(address.Get()); } else { error = SFERR_FAILED; } } error = _smtp.SendEhloCommand(_client); } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedConnect // /*private */SFCError SFXSMTPSender::ProceedEhlo(UInt16 code) { SFCError error(SFERR_NO_ERROR); SFXSMTP::AuthEnum auth(SFXSMTP::AUTH_NONE); SFXAnsiString temp; if (_auth == AUTH_NONE) { if (code == 250) { _progress = PROGRESS_MAIL; if ((error = SetBrackets(_from, &temp)) == SFERR_NO_ERROR) { error = _smtp.SendMailCommand(temp); } } else { _progress = PROGRESS_HELO; error = _smtp.SendHeloCommand(_client); } } else { if (code == 250) { _progress = PROGRESS_AUTH; switch (_auth) { case AUTH_NONE: auth = SFXSMTP::AUTH_NONE; break; case AUTH_PLAIN: auth = SFXSMTP::AUTH_PLAIN; break; case AUTH_LOGIN: auth = SFXSMTP::AUTH_LOGIN; break; case AUTH_CRAM_MD5: auth = SFXSMTP::AUTH_CRAM_MD5; break; case AUTH_DIGEST_MD5: auth = SFXSMTP::AUTH_DIGEST_MD5; break; default: break; } error = _smtp.SendAuthCommand(auth); } else { ProceedError(); } } return error; }// SFXSMTPSender::ProceedEhlo // /*private */SFCError SFXSMTPSender::ProceedHelo(UInt16 code) { SFCError error(SFERR_NO_ERROR); SFXAnsiString temp; if (code == 220) { _progress = PROGRESS_MAIL; if ((error = SetBrackets(_from, &temp)) == SFERR_NO_ERROR) { error = _smtp.SendMailCommand(temp); } } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedHelo // /*private */SFCError SFXSMTPSender::ProceedAuth(UInt16 code) { SFCError error(SFERR_NO_ERROR); if (code == 334) { _progress = PROGRESS_AUTHRESP1; switch (_auth) { case AUTH_PLAIN: error = _smtp.SendAuthResponse(_user, _password); break; case AUTH_LOGIN: error = _smtp.SendAuthResponse(_user); break; case AUTH_CRAM_MD5: error = _smtp.SendAuthResponse(_user, _password, _smtp.GetResponseText()); break; case AUTH_NONE: case AUTH_DIGEST_MD5: default: // DIGEST_MD5 has not been supported yet. _previous = _progress; _progress = PROGRESS_ERRORQUIT; if ((error = _smtp.SendQuitCommand()) == SFERR_NO_ERROR) { _quit = true; } break; } } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedAuth // /*private */SFCError SFXSMTPSender::ProceedAuthresp1(UInt16 code) { SFCError error(SFERR_NO_ERROR); SFXAnsiString temp; if (code == 334) { if (_auth == AUTH_LOGIN) { _progress = PROGRESS_AUTHRESP2; error = _smtp.SendAuthResponse(_password); } } else if (code == 235) { _progress = PROGRESS_MAIL; if ((error = SetBrackets(_from, &temp)) == SFERR_NO_ERROR) { error = _smtp.SendMailCommand(temp); } } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedAuthresp1 // /*private */SFCError SFXSMTPSender::ProceedAuthresp2(UInt16 code) { SFCError error(SFERR_NO_ERROR); SFXAnsiString temp; if (code == 235) { _progress = PROGRESS_MAIL; if ((error = SetBrackets(_from, &temp)) == SFERR_NO_ERROR) { error = _smtp.SendMailCommand(temp); } } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedAuthresp2 // /*private */SFCError SFXSMTPSender::ProceedMail(UInt16 code) { SFXAnsiString temp; SFCError error(SFERR_NO_ERROR); if (code == 250) { _progress = PROGRESS_RCPT; _index = 0; if ((error = SetBrackets(*_toList[0], &temp)) == SFERR_NO_ERROR) { error = _smtp.SendRcptCommand(temp); } } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedMail // /*private */SFCError SFXSMTPSender::ProceedRcpt(UInt16 code) { SFXAnsiString temp; SFCError error(SFERR_NO_ERROR); if (code == 250 || code == 251) { ++_index; if (_index < _toList.GetSize()) { if ((error = SetBrackets(*_toList[_index], &temp)) == SFERR_NO_ERROR) { error = _smtp.SendRcptCommand(temp); } } else { _progress = PROGRESS_DATA; error = _smtp.SendDataCommand(); } } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedRcpt // /*private */SFCError SFXSMTPSender::ProceedData(UInt16 code) { SFCError error(SFERR_NO_ERROR); if (code == 354) { _progress = PROGRESS_DATATEXT; error = _smtp.SendDataText(_message); } else { ProceedError(); } return error; }// SFXSMTPSender::ProceedData // /*private */SFCError SFXSMTPSender::ProceedDataText(UInt16 /*code*/) { SFCError error(SFERR_NO_ERROR); _progress = PROGRESS_QUIT; if ((error = _smtp.SendQuitCommand()) == SFERR_NO_ERROR) { _quit = true; } return error; }// SFXSMTPSender::ProceedDataText // /*private */Void SFXSMTPSender::ProceedError(Void) { _previous = _progress; _progress = PROGRESS_ERRORQUIT; if (_smtp.SendQuitCommand() == SFERR_NO_ERROR) { _quit = true; } return; }// SFXSMTPSender::ProceedError // /*private */Void SFXSMTPSender::FinishSend(SFCError error) { _state = STATE_STANDBY; _smtp.Close(); if (_spp != null) { _spp(error, _reference); } return; }// SFXSMTPSender::FinishSend // /*private */SFCError SFXSMTPSender::SetBrackets(SFXAnsiStringConstRef string, SFXAnsiStringPtr result) { SFCError error(SFERR_NO_ERROR); if (string.StartsWith('<') && string.EndsWith('>')) { error = result->Set(string); } else { if ((error = result->Set('<')) == SFERR_NO_ERROR) { if ((error = result->Add(string)) == SFERR_NO_ERROR) { error = result->Add('>'); } } } return error; }// SFXSMTPSender::SetBrackets //
コンストラクタ/デストラクタ |
---|
SFXSMTP( Void ) SFXSMTP クラスのコンストラクタです。
|
~SFXSMTP( Void ) SFXSMTP クラスのデストラクタです。
|
型 |
---|
AuthEnum SMTP 認証方式を表す定数です。
|
CallbackSPP SMTP サーバー接続や SMTP コマンド発行の結果が通知されるコールバック関数の型です。
|
[ public, explicit ] SFXSMTP(Void);
このコンストラクタでは、SSL 接続モードを OFF(false)に設定します。
注意 | |
---|---|
SMTP メール送信に必要なリソースは、 SFXSMTP::Open、 SFXSMTP::Connect などの関数を呼び出したときに確保されます。 |
[ public, virtual ] ~SFXSMTP(Void);
このデストラクタは、SMTP サーバーとの接続を終了します。
内部で使用している TCP / SSL 通信やストリームの処理やコールバックをキャンセルし、 同時にリソースを解放します。
注意 | |
---|---|
SFXSMTP::Close 関数と同等の処理を行います。 |
[ public ] Void Cancel(Void);
この関数は、SMTP メール送信をキャンセルします。
内部で使用している TCP / SSL 通信やストリームの処理やコールバックをキャンセルします。
注意 | |
---|---|
この関数は、内部的に SFXSMTP::Close 関数から呼び出されます。 |
[ public ] Void Close(Void);
この関数は、SMTP サーバーとの接続を終了します。
内部で使用している TCP / SSL 通信やストリームの処理やコールバックをキャンセルし、 同時にリソースを解放します。
注意 | |
---|---|
この関数は、内部的に SFXSMTP::Cancel 関数を呼び出します。 |
SMTP サーバーとの接続の切断方法 | |
---|---|
SFXSMTP::SendQuitCommand 関数を使用して QUIT コマンドを発行し、 SMTP サーバーからの応答を確認した後、 この関数を呼び出して SMTP サーバーとの接続を切断します。 ※ SMTP プロトコル(RFC2821)では、 QUIT コマンドを発行せずに強制的に切断することを推奨していないため、 通信中にこの関数を明示的に呼ぶべきではありません。 |
SFXSMTP::Cancel | SFXSMTP::SendQuitCommand | SFXSMTP::Connect | RFC2821(Simple Mail Transfer Protocol)
[ public ] SFCError Connect( SFXSocketAddressConstRef address // [入力] SMTP サーバーのソケットアドレス(ドメイン名または IP アドレスとポート番号) CallbackSPP spp // [入力] SMTP サーバー接続や SMTP コマンド発行の結果が通知されるコールバック関数 VoidPtr reference // [入力] コールバック関数に渡すデータ(参照値) );
SMTP サーバーのソケットアドレス(ドメイン名または IP アドレスとポート番号)を指定します。
SMTP サーバー接続や SMTP コマンド発行の結果が通知されるコールバック関数を指定します。
コールバック関数に渡すデータ(参照値)を指定します。
この関数は、SMTP サーバーに接続します。
コールバック関数 | |
---|---|
SMTP サーバー接続や SMTP コマンド発行の結果は、 spp 引数に指定するコールバック関数(SFXSMTP::CallbackSPP)に通知されます。 |
SFXSMTP::Open | SFXSMTP::Close | SFXSocketAddress | SFXSMTP::CallbackSPP | BREW API ISOCKET_GetLastError
[ public, const ] SFCError GetEhloResponse( SFXAnsiStringPtr domain // [出力] ドメイン名または IP アドレスが格納された場所へのポインタ SFXAnsiStringPtr greet // [出力] グリーティングメッセージが格納された場所へのポインタ SFXAnsiStringHandle extList // [出力] 拡張コマンドのリストが格納された場所へのポインタ UInt32Ptr extCount // [出力] 拡張コマンドの数が格納された場所へのポインタ );
SMTP サーバーが応答するドメイン名または IP アドレスが格納された場所へのポインタが返却されます。 取得する必要がない場合、null を指定します。
SMTP サーバーが応答するグリーティングメッセージが格納された場所へのポインタが返却されます。 取得する必要がない場合、null を指定します。
SMTP サーバーが応答する拡張コマンドのリストが格納された場所へのポインタが返却されます。 SFXAnsiString の配列が渡されます。 配列は、呼び出し側が "::delete []" で解放する必要があります。 取得する必要がない場合、null を指定します。
SMTP サーバーが応答する拡張コマンドの数が格納された場所へのポインタが返却されます。 取得する必要がない場合、null を指定します。
この関数は、 SFXSMTP::SendEhloCommand 関数により発行される ELHO コマンドの応答を取得します。
具体的には、 ELHO コマンドを発行した後に呼び出されるコールバック関数内で、 ELHO コマンドの応答に含まれる、 ドメイン名または IP アドレス、グリーティングメッセージ、拡張コマンドのリストと数を取得します。
ELHO コマンドについて | |
---|---|
ELHO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。 ELHO コマンドの詳細は、 RFC2821: 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO) を参照してください。 |
[ public, const ] SFCError GetHeloResponse( SFXAnsiStringPtr domain // [出力] ドメイン名または IP アドレス SFXAnsiStringPtr greet // [出力] グリーティングメッセージ );
SMTP サーバーが応答するドメイン名または IP アドレスが格納された場所へのポインタが返却されます。 取得する必要がない場合は、null を指定します。
SMTP サーバーが応答するグリーティングメッセージが格納された場所へのポインタが返却されます。 取得する必要がない場合は、null を指定します。
この関数は、 SFXSMTP::SendHeloCommand 関数により発行される HELO コマンドの応答を取得します。
具体的には、 HELO コマンドを発行した後に呼び出されるコールバック関数内で、 HELO コマンドの応答に含まれる、 ドメイン名または IP アドレス、グリーティングメッセージを取得します。
HELO コマンドについて | |
---|---|
HELO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。 HELO コマンドの詳細は、 RFC2821: 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO) を参照してください。 |
[ public, const ] SFCError GetLocalAddress( SFXSocketAddressPtr result // [出力] SMTP クライアントのソケットアドレス(ドメイン名または IP アドレスとポート番号)の格納先へのポインタ );
この関数は、SMTP クライアントのソケットアドレス(ドメイン名または IP アドレスとポート番号)を取得します。
SFXInetAddress::LocalInetAddress | SFXTCPSocket::GetLocalAddress | SFXSocketAddress | BREW API ISOCKET_GetLastError
[ public, const ] SFCError GetRemoteAddress( SFXSocketAddressPtr result // [出力] SMTP サーバーのソケットアドレス(ドメイン名または IP アドレスとポート番号)の格納先へのポインタ );
この関数は、SMTP サーバーのソケットアドレス(ドメイン名または IP アドレスとポート番号)を取得します。
[ public, const ] SInt32 GetResponseCode(Void);
10 進数 3 桁の応答コード
この関数は、SMTP コマンドの応答コードを取得します。
注意 | |
---|---|
SMTP コマンド発行の結果は、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数に通知されます。 コールバック関数内でこの関数を呼び出すことで応答コードを取得できます。 |
注意 | |
---|---|
応答コードの詳細は、 RFC2821: 4.2 SMTP Replies を参照してください。 |
[ public, const ] SFXAnsiString GetResponseText(Void);
[ public, const ] SFCError GetResponseText( SFXAnsiStringPtr result // [出力] 応答テキストが格納された場所へのポインタ );
SMTP サーバーから取得した応答テキストが格納された場所へのポインタが返却されます。
この関数は、SMTP コマンドの応答テキストを取得します。
注意 | |
---|---|
SMTP コマンド発行の結果は、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数に通知されます。 コールバック関数内でこの関数を呼び出すことで応答コードを取得できます。 |
応答テキストとは | |
---|---|
応答テキストとは、 SMTP サーバーからの応答メッセージから行頭の応答コードとそれに続く空白文字またはハイフン("-")を削除したテキストのことです。 応答テキストの詳細は、 RFC2821: 4.2 SMTP Replies を参照してください。 |
[ public, const ] Bool GetSSLMode(Void);
この関数は、SMTP メール受信の SSL 接続モードを取得します。
[ public, const ] UInt32 GetTrustMode(Void);
SSL 認証モード
この関数は、SMTP メール受信の SSL 認証モードを取得します。
以下の 4 種類の SSL 認証モードの何れかが返却されます。
[ public ] SFCError Open(Void);
この関数は、SMTP サーバーに接続するための初期化を行います。
注意 | |
---|---|
この関数は、 内部的に SFXSSLSocket::Open 関数を呼び出します (TCP 接続の場合は、内部で使用している SFXSSLSocket::Connect 関数のコールバック関数内で SFXSSLSocket::Permit 関数を呼び出します)。 |
[ public ] SFCError SendAuthCommand( AuthEnum auth // [入力] SMTP 認証方式 );
設定可能な SMTP 認証方式は、以下の 4 種類です(SFXSMTP::AuthEnum)。
この関数は、AUTH コマンドを SMTP サーバーに送信します。
auth 引数に指定できる認証方式(SFXSMTP::AuthEnum)は、 AUTH_NONE / PLAIN / LOGIN / CRAM-MD5 の何れかです。
AUTH コマンドは、 どの認証方式が利用可能か明記されている EHLO コマンドの応答を受信してから SMTP サーバーに送信します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
AUTH コマンドについて | |
---|---|
AUTH コマンドは、サーバーとクライアントが相互認証(SMTP 認証)するためのコマンドです。 AUTH コマンドの詳細は、 RFC2554: SMTP Service Extension for Authentication を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
以下は、CRAM-MD5 認証を行うコードです。
smtp.SendAuthCommand(SFXSMTP::AUTH_CRAM_MD5);
SFXSMTP::SendAuthResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | SFXSMTP::AuthEnum | RFC2554: SMTP Service Extension for Authentication
[ public ] SFCError SendAuthResponse( SFXAnsiStringConstRef str1 // [入力] 文字列 1(認証方式によって異なります) SFXAnsiStringConstRef str2 = SFXAnsiString::EmptyInstance() // [入力] 文字列 2(認証方式によって異なります) SFXAnsiStringConstRef str3 = SFXAnsiString::EmptyInstance() // [入力] 文字列 3(認証方式によって異なります) );
この関数は、AUTH コマンドの応答に対する返答を送信します。
AUTH コマンドを SFXSMTP::SendAuthCommand 関数で送信した後、 SMTP サーバーからの応答に対して返答を送ります(※ SMTP 認証方式により引数に指定する内容は異なります)。
PLAIN の場合
LOGINの場合 : 1 回目は "SendAuthResponse(user)" を実行します。 SMTP サーバーから応答があった後、 2 回目は "SendAuthResponse(password)" を実行します。
CRAM-MD5 の場合
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 引数に指定した文字列は自動的に Base64 エンコードされます。 |
AUTH コマンドについて | |
---|---|
AUTH コマンドは、サーバーとクライアントが相互認証(SMTP 認証)するためのコマンドです。 AUTH コマンドの詳細は、 RFC2554: SMTP Service Extension for Authentication を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
以下は、CRAM-MD5 認証を行うコードです。
smtp.SendAuthResponse("user", "password", smtp.GetResponseText());
SFXSMTP::SendAuthResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | SFXMailUtility::EncodeBase64 | RFC2554: SMTP Service Extension for Authentication
[ public ] SFCError SendCommand( ACharConstPtr command // [入力] SMTP コマンドが格納されている変数へのポインタ UInt32 size // [入力] SMTP コマンドの長さ );
[ public ] SFCError SendCommand( SFXAnsiStringConstRef command // [入力] SMTP コマンド );
SMTP サーバーに送信する SMTP コマンドを指定します。
この関数は、SMTP コマンドを発行します。
注意 | |
---|---|
この関数を使用すれば、任意の SMTP コマンドを発行することが可能です。 ただし、command 引数に指定するコマンドの行末に CRLF(\r\n) は自動的に付与されませんので注意してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1 SMTP Commands
[ public ] SFCError SendDataCommand(Void);
この関数は、DATA コマンドを発行します。
SMTP サーバーは DATA コマンドを受信すると、 データ(メールヘッダーとメール本文からなるメールテキスト)の送信を促す『応答コード: 354』 を返却します。
クライアント側では、『応答コード: 354』 の確認後、 SFXSMTP::SendDataText 関数を使用してデータ(メールヘッダーとメール本文からなるメールテキスト)を送信します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
DATA コマンドについて | |
---|---|
DATA コマンドは、 データ(メールヘッダーとメール本文からなるメールテキスト)を送信する直前に発行するコマンドです。 DATA コマンドの詳細は、 RFC2821: 4.1.1.4 DATA (DATA) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::SendDataText | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.4 DATA (DATA)
[ public ] SFCError SendDataText( SFXAnsiStringConstRef text // [入力] 送信するデータ );
メールの本文です。
この関数は、データ(メールヘッダーとメール本文からなるメールテキスト)を送信します。
この関数は、SFXSMTP::SendDataCommand 関数による DATA コマンドの『応答コード: 354』 を確認した後で呼び出します。
注意 | |
---|---|
text 引数に指定するデータの各行の長さは、CRLF 文字を含めて 1000 文字以下でなければいけません。 |
注意 | |
---|---|
各行頭に "." 文字を追加するドット・スタッフィング(dot-stuffing)と、 ".\r\n" だけからなる最終行の追加は自動的に行われます。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::SendDataCommand | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.4 DATA (DATA)
[ public ] SFCError SendEhloCommand( SFXAnsiStringConstRef hostName // [入力] ホスト名 );
接続するクライアントのホスト名です。
この関数は、ELHO コマンドを発行します。
応答メッセージは SFXSMTP::GetEhloResponse 関数で取得します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
ELHO コマンドについて | |
---|---|
ELHO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。 ELHO コマンドの詳細は、 RFC2821: 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::GetEhloResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
[ public ] SFCError SendHeloCommand( SFXAnsiStringConstRef hostName // [入力] ホスト名 );
接続するクライアントのホスト名です。
この関数は、HELO コマンドを発行します。
応答メッセージは SFXSMTP::GetHeloResponse 関数で取得します。 HELO コマンドは古いサーバーとの互換性のために用意されており、使用は推奨されていません。 通常は ELHO コマンド(SFXSMTP::SendEhloCommand 関数)を使用します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
HELO コマンドについて | |
---|---|
HELO コマンドは、SMTP メール送信のセッションを開始するためのコマンドです。 HELO コマンドの詳細は、 RFC2821: 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::SendEhloCommand | SFXSMTP::GetHeloResponse | SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.1 Extended HELLO (EHLO) or HELLO (HELO)
[ public ] SFCError SendMailCommand( SFXAnsiStringConstRef from // [入力] 送信元メールアドレス );
送信元メールアドレスを指定します(送信元アドレスは、"<" と ">" で囲む必要があります。)
この関数は、MAIL コマンドを発行します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
MAIL コマンドについて | |
---|---|
MAIL コマンドは、メールメッセージの送信元アドレスを設定するためのコマンドです。 MAIL コマンドの詳細は、 RFC2821: 4.1.1.2 MAIL (MAIL) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.2 MAIL (MAIL)
[ public ] SFCError SendNoopCommand(Void);
この関数は、NOOP コマンドを発行します。
NOOP コマンドを受け取ると、 SMTP サーバーはいつも "250 ok" という応答を返します("250" は応答コード、"ok" は応答テキスト)。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
NOOP コマンドについて | |
---|---|
NOOP コマンドを発行しても何も起きません。 このコマンドによりタイマによる自動ログアウトを回避したり、 SMTP サーバーとの接続を確認することができます。 NOOP コマンドの詳細は、 RFC2821: 4.1.1.9 NOOP (NOOP) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.9 NOOP (NOOP)
[ public ] SFCError SendQuitCommand(Void);
この関数は、QUIT コマンドを発行します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
SMTP メール送信のセッション終了方法 | |
---|---|
この関数で QUIT コマンドを発行し、その応答を確認してから、 SFXSMTP::Close 関数を呼び出して SMTP サーバーとの接続を切断します。 |
QUIT コマンドについて | |
---|---|
QUIT コマンドは、SMTP メール送信のセッションを終了するためのコマンドです。 QUIT コマンドの詳細は、 RFC2821: 4.1.1.10 QUIT (QUIT) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTPSender::IsQuit | SFXSMTP::Connect | RFC2821: 4.1.1.10 QUIT (QUIT)
[ public ] SFCError SendRcptCommand( SFXAnsiStringConstRef to // [入力] メールメッセージの送信先アドレス );
メールメッセージの送信先アドレスを指定します(送信先アドレスは、"<" と ">" で囲む必要があります。)
この関数は、RCPT コマンドを発行します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
RCPT コマンドについて | |
---|---|
RCPT コマンドは、メールメッセージの送信先を設定するためのコマンドです。 RCPT コマンドの詳細は、 RFC2821: 4.1.1.3 RECIPIENT (RCPT) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.3 RECIPIENT (RCPT)
[ public ] SFCError SendRsetCommand(Void);
この関数は、RSET コマンドを発行します。
注意 | |
---|---|
SMTP コマンドの行末を表す CRLF(\r\n)は、自動的に付与されます。 |
RSET コマンドについて | |
---|---|
RSET コマンドは、SMTP メール送信のセッションをリセットするためのコマンドです。 RSET コマンドの詳細は、 RFC2821: 4.1.1.5 RESET (RSET) を参照してください。 |
エラー値と応答コード | |
---|---|
この関数の戻り値として返却されるのは、 クライアント側の内部処理についてのエラー値です。 通信やコマンドについての実行エラーは、 SFXSMTP::Connect 関数の spp 引数に指定するコールバック関数の第 1 引数に通知されます。 ※コマンドの実行結果(応答コード/応答テキスト)は、 コールバック関数内で SFXSMTP::GetResponseCode / SFXSMTP::GetResponseText 関数を呼び出すことでを取得できます。 |
SFXSMTP::GetResponseCode | SFXSMTP::GetResponseText | SFXSMTP::Connect | RFC2821: 4.1.1.5 RESET (RSET)
この関数は、SSL 接続モードを設定します。
デフォルト値: false(SSL 接続モードは OFF)
注意 | |
---|---|
SSL 接続モードを ON する場合、isSSL 引数に true を指定します。 |
以下の 4 種類の何れかの SSL 認証モードを指定します。
この関数は、SMTP メール受信の SSL 認証モードを設定します。
デフォルト値: SSL_TRUST_MODE_FAIL
設定可能な SSL 認証モードは以下の通りです(参照: BREW API ISSL_NegotiateV)。
注意 | |
---|---|
SFXSMTP::Connect 関数を使用して SMTP サーバーに接続する直前に、 この関数を呼び出して SSL 認証モードを設定します。 |
enum AuthEnum { AUTH_NONE =0, // SMTP 認証を行いません。 AUTH_PLAIN, // PLAIN 認証を行います。 AUTH_LOGIN, // LOGIN 認証を行います。 AUTH_CRAM_MD5, // CRAM-MD5 認証を行います。 AUTH_DIGEST_MD5 // DIGEST-MD5 認証を行います(現バージョンでは、DIGEST-MD5 認証は使用できません)。 };
SMTP 認証方式を表す定数です。
SFXSMTP::SendAuthCommand 関数を使用して下記の SMTP 認証方式の定数を指定できます。
SMTP 認証を行いません。
PLAIN 認証を行います。
LOGIN 認証を行います。
CRAM-MD5 認証を行います。
DIGEST-MD5 認証を行います(現在のバージョンでは、サポートされていません)。
typedef Void(* SFXSMTP::CallbackSPP)(SFCError error, VoidPtr reference)
SMTP サーバー接続や SMTP コマンド発行の結果が通知されるコールバック関数の型です。
このコールバック関数は、SFXSMTP::Connect 関数の spp 引数に指定します。 SMTP サーバー接続や SMTP コマンド発行の結果(エラー値)は、このコールバック関数に通知されます。
第 1 引数にエラーコード、 第 2 引数は SFXSMTP::Connect 関数で指定した引数(通常、SFXSMTP インスタンス: this)が渡されます。
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |