アプリケーション開発をする方へ
ここではMiniSmtpMailer.dllを利用したアプリケーションの開発をする方へのドキュメントを提供しています。
DLLを使ったアプリケーションを初めて作るという方にもわかりやすく解説したつもりです。
なお、Visual C++.NETでの開発を前提として話を進めさせていただきます(Visual C++ 6.0でもできます)。
解説する内容は以下の通りです。
- プロジェクトへの登録方法
- MiniSmtpMailer.dllのメソッドの定義とその意味
- 実行手順例
プロジェクトへの登録方法
まず、MiniSmtpMailer.dllを使うための準備について解説します。
1.ワーキングフォルダへのコピー
プロジェクトのワーキングフォルダに次の3つのファイルをコピーします。
- MiniSmtpMailer.h
- MiniSmtpMailer.lib
- MiniSmtpMailer.dll
2.ライブラリの登録
Visual C++.NETでのメニューにおいて、プロジェクト->プロパティをクリックします(図1)。
すると、様々な設定を行う画面が表示されるので、リンクの入力をクリックしてください。
ここで、依存ファイルにMiniSmtpMailer.libを追加します(図2)。以上で完了です。

(図1)プロパティをクリック

(図2)MiniSmtpMailer.libの登録 (クリックすると拡大表示します)
3.メソッド宣言のインクルード
MiniSmtpMailerの機能を利用したいソースファイル(cpp)で、"MiniSmtpMailer.h"をインクルードします(図3)。
すると、MiniSmtpMailerのメソッドを利用できるようになります。

(図3)MiniSmtpMailer.hのインクルード
MiniSmtpMailer.dllのメソッドの定義とその意味
ここでは、MiniSmtpMailer.dllのメソッドについて解説します。メソッドはすべてで次に示す6種類です。
- SmtpGetVersion バージョンの取得
- SmtpInit 初期化
- SmtpSetMessage ヘッダおよびメッセージの登録
- SmtpAddFile 添付ファイルの登録
- SmtpSendMail メール送信
- SmtpGetLog ログの取得
1.SmtpGetVersion バージョンの取得
定義 : DWORD SmtpGetVersion();
バージョン情報の取得メソッドです。DWORD型で返されます。
MSB(上側)16ビットと下側(LSB)16ビットで構成されています。
MiniSmtpMailerのバージョンがVer.x.yの場合はMSB側はxでLSB側はyです。
Ver.1.0の場合はMSB側が1でLSB側が0、すなわち0x00010000が返されます。
2.SmtpInit MiniSmtpMailerの初期化
定義 : BOOL SmtpInit(LPCTSTR ServerName,LPCTSTR MyHostName);
MiniSmtpMailerの初期化を行います。引数の意味は次の通りです。
ServerName : 利用するSMTPサーバのホスト名
MyHostName : このコンピュータのホスト名(通常はNULLで構いません)
戻り値 : 成功すればTRUE、不正な値で初期化するとFALSE。
3.SmtpSetMessage ヘッダおよびメッセージの登録
定義 : BOOL SmtpSetMessage(LPCTSTR ToAddr,
LPCTSTR CcAddr,
LPCTSTR FromAddr,
LPCTSTR Subject,
LPCTSTR Body);
ヘッダー情報と本文を登録します。引数の意味は次の通りです。
ToAddr : 宛先のメールアドレス(','で複数接続可)
CcAddr : Ccヘッダー(','で複数接続可)
FromAddr : 送信者のメールアドレス
Subject : タイトル
Body : 本文
戻り値 : メッセージの登録に成功すればTRUE、失敗すればFALSE。
4.SmtpAddFile 添付ファイルの登録
定義 : BOOL SmtpAddFile(LPCTSTR FilePath);
添付ファイルの登録メソッドです。引数の意味は次の通りです。
FilePath : 添付するファイルへのパス
戻り値 : メッセージの登録に成功すればTRUE、失敗すればFALSE。
このメソッドは複数回操作可能です。なお、添付ファイルの最大サイズは10Mバイトです。
10Mバイト以上のファイルを添付しようとすると失敗します。
5.SmtpSendMail メール送信実行
定義 : BOOL SmtpSendMail(LPCTSTR* SendAddrs,int nCount)
複数のアドレスに対してメール送信を行います。引数の意味は次の通りです。
SendAdders : メールアドレスが格納された文字列の配列へのポインタ
nCount : 配列の大きさ
戻り値 : メール送信に成功すればTRUE、失敗すればFALSE。
ここで指定されるアドレスは、通常はSmtpSetMessageメソッドのToAddr, CcAddrで指定したものと同一なアドレスにします。
しかし、それ以外のアドレスも指定することができます。この場合、これらのアドレスはBccとして処理されます。
6.SmtpGetLog 通信ログの取得
定義 : BOOL SmtpGetLog(LPTSTR Log,int nSize);
通信ログの取得をするメソッドです。このメソッドはエラーが発生した場合などに使うとよいでしょう。
引数の意味は次のようになります。
Log[out] : この文字列配列にログが返ります。
nSize[in] : Logの大きさ
戻り値 : ログの取得に成功すればTRUE、失敗すればFALSE。
実行手順例
まず、SmtpGetVersionメソッドでバージョン情報の確認をします。
次にSmtpInitメソッドを使い、利用するSMTPサーバを指定してください。
その後、SmtpSetMessageメソッドを使って、ヘッダおよびメッセージをMiniSmtpMailerに登録します。
そして、もし必要であればSmtpAddFileメソッドで添付ファイルも登録します。
以上の操作でメール送信の準備が整うので、SmtpSendMailメソッドを使ってメールを送信します。
なお、SmtpSendMailでFALSEが返ってきた場合はSmtpGetLogで通信内容を確認できます。
バージョン情報
Ver.1.2.0.1 (2005/05/03更新)
連続でSmtpInitメソッドを使用した場合に、前の送信データが初期化されないバグを修正。
SmtpInitを実行すると、完全に初期化されるようにしました。
Ver.1.1.0.1 (2005/04/04更新)
OutlookExpressでISO-2022-JPのコーディングミスが発覚したため修正。
原因はエンコーディングの最後において、JISモードからASCIIモードに戻っていなかったことによる。
MiniSmtpMailerおよび、SimpleMailTransmitter、そしてこのドキュメントの著作権はMultisoft-labに属します。
|