63 DEFSUPER(CAbstractMailClient);
67 CSmtpClient(
void) : _super(), m_pPop3(NULL), m_isEhloMode(true)
84 m_isEhloMode = enable;
95 return m_ascOpeningMessage;
107 _super::SetServerName(lpszName, wPort);
117 m_ascDomain = lpszDomain;
128 m_dwPop3Wait = dwWait;
138 m_ascFromMailAddr = lpszFromMailAddr;
156 m_vascToMailAddrs.
Add(lpszToAddr);
171 SetErrorText(
"未設定項目有り");
175 if ( m_pPop3 != NULL )
177 if ( ! m_pPop3->Connect() )
179 SetErrorText(m_pPop3->GetErrorText());
182 m_pPop3->Disconnect();
183 ::Sleep(m_dwPop3Wait);
196 CAscii ascFromAddr = m_ascFromMailAddr;
201 if ( ! Command(
CAscii::Fmt(
"MAIL FROM:<%s>", ascFromAddr)) )
213 if ( ! Command(
CAscii::Fmt(
"RCPT TO:<%s>", vascToAddrs[i])) )
219 if ( ! Command(
"DATA") )
224 return Command(ascMain);
241 return (a[0] ==
'2' || a[0] ==
'3');
253 return Command(_res,
"QUIT");
265 if ( Read(s) && s.
Find(
"220") == 0 )
267 m_ascOpeningMessage = s;
268 CAscii hel = m_isEhloMode ?
"EHLO" :
"HELO";
269 if ( Command(
CAscii::Fmt(
"%s %s", hel, m_ascDomain)) )
287 CAscii m_ascOpeningMessage;
291 CPop3Client* m_pPop3;
304クライアント HELO <satoh@some.where.com><CRLF>
306クライアント MAIL FROM:<satoh@some.where.com><CRLF>
309クライアント RCPT TO:<smith@another.com> <CRLF>
313サーバ 354 Start mail input; end with <CRLF>.<CRLF>
322 send.print(
"From: "+sender+CRLF);
323 send.print(
"To: " + receiver+CRLF);
324 send.print(
"Subject: " + title+CRLF);
325 send.print(
"Comment: Unauthenticated sender"+CRLF);
326 send.print(
"X-Mailer: Tiny SMTP Program"+CRLF);
328 send.print(message+CRLF);
335・一般的なメールエンコードは、Subject が BASE64、本文が JIS になって
337 Outlook Express では、エンコードなしの S-JIS のままでも
338 Subject、本文が BASE64 でも問題なく読める。
339 インターネットへ送信するメールは、少なくとも BASE64 のエンコードは
342 ・メールヘッダのBASE64 Subject 形式は、次のとおりである。
345 | | || || |_ ?= 終了コード
346 | | || ||_ エンコードタイトル文字列
350 | |_ BASE64 は「iso-2022-jp」
353 ・メール本文のBASE64 エンコード指定は、次のとおりである。
356 Content-Type: text/plain;
357 charset=
"iso-2022-jp"
358 Content-Transfer-Encoding: base64
#define loop(VAR, CNT)
loop構文.
POP3(Post Office Protocol version 3)関係のヘッダ
CAscii GetAddress(void) const
[取得] アドレス取得
CAsciiVector GetAddrsForSend(void) const
[取得] 送信用アドレス一覧
bool IsCompletesForSend(void) const
[確認] 送信可能確認.
CAscii GetContentForSend(void) const
[取得] 送信用メール内容取得
const CMailAddress & ReferFromMailAddr(void) const
[参照] 送信メールアドレス参照
SMTP(Simple Mail Transfer Protocol)プロトコル処理クラス
void AddToAddr(LPCTSTR lpszToAddr)
[設定] 宛先名設定
void SetPopBeforeMode(CPop3Client *pPop3, DWORD dwWait=300)
[設定] POP Before SMTP 設定
virtual ~CSmtpClient(void)
デストラクタ
void SetDomain(LPCTSTR lpszDomain)
[設定] 送信名設定
virtual bool IsValidResponse(const CAscii &a) const
[確認] レスポンスチェック
CAscii GetOpeningMessage(void) const
[取得] 接続成功時の文字列.
void SetFromMailAddr(LPCTSTR lpszFromMailAddr)
[設定] 送信者アドレス設定
void InitToMailAddr(void)
[設定] 宛先名設定初期化
virtual bool OnConnect(void)
[設定] 接続時処理
bool Send(const CMailContent &mail)
[送信] メール送信.
void SetExtendedHelloMode(bool enable)
[設定] ExtendedHelloMode設定
virtual bool QuitCommand(CAscii &_res)
[設定] 終了コマンド
void SetServerName(LPCTSTR lpszName, WORD wPort=25)
[設定] 通信設定.
bool IsEmpty(void) const
[確認] 空チェック
static CStrT Fmt(const char *lpszFormat,...)
[作成] 書式付き文字列作成
INT_PTR Find(TYP t, INDEX iFromIndex=0) const
[確認] 検索.
virtual size_t GetSize(void) const
[取得] サイズ取得
virtual bool RemoveAll(void)
[削除] 空化
virtual INDEX Add(const TYP &t)
[追加] 要素一つ追加.
bool IsEmpty(void) const
[確認] 要素の有無確認.