SMTPメール送信DLL
MiniSmtpMailer


Multisoft-labホーム    質問等の受付

MiniSmtpMailerは単純な操作でメール送信ができるDLL
日本語や添付ファイル機能もサポートしているため、実用的で応用範囲が広い!
タイトル及び本文はISO-2022-JPでエンコードし、添付ファイルはBASE64でエンコードして送信します
フリーソフトです!!

SimpleMailTransmitter
 MiniSmtpMailerの配布パッケージには、単純なメール送信ソフト(SimpleMailTransmitter)も同封されています(左図)。 このソフトは非常に軽いソフトですが、複数の添付ファイルにも対応していて、そこそこ使えます。

MiniSmtpMailer Ver.1.2のダウンロード



パッケージの配布

 こちらでメール送信DLLのパッケージを配布しております。 このパッケージには、アプリケーション開発に必要なソフト、 及びMiniSmtpMailerを使ったサンプルアプリケーションが同封されています。

MiniSmtpMailer Ver.1.2のダウンロード

パッケージの内容

ファイル名 内 容
SimpleMailTransmitter.exe SimpleMailTransmitter(MiniSmtpMailerを使ったアプリケーション)
MiniSmtpMailer.dll SMTPメール送信DLL
MiniSmtpMailer.lib SMTPメール送信DLLのライブラリ
MiniSmtpMailer.h SMTPメール送信DLLのインクルードファイル
Readme.txt ドキュメント



アプリケーション開発をする方へ

 ここではMiniSmtpMailer.dllを利用したアプリケーションの開発をする方へのドキュメントを提供しています。 DLLを使ったアプリケーションを初めて作るという方にもわかりやすく解説したつもりです。 なお、Visual C++.NETでの開発を前提として話を進めさせていただきます(Visual C++ 6.0でもできます)。

解説する内容は以下の通りです。

  • プロジェクトへの登録方法
  • MiniSmtpMailer.dllのメソッドの定義とその意味
  • 実行手順例


プロジェクトへの登録方法

 まず、MiniSmtpMailer.dllを使うための準備について解説します。

1.ワーキングフォルダへのコピー

 プロジェクトのワーキングフォルダに次の3つのファイルをコピーします。

  1. MiniSmtpMailer.h
  2. MiniSmtpMailer.lib
  3. MiniSmtpMailer.dll

2.ライブラリの登録

 Visual C++.NETでのメニューにおいて、プロジェクト->プロパティをクリックします(図1)。 すると、様々な設定を行う画面が表示されるので、リンクの入力をクリックしてください。 ここで、依存ファイルにMiniSmtpMailer.libを追加します(図2)。以上で完了です。

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

MiniSmtpMailer.libの追加
(図2)MiniSmtpMailer.libの登録
(クリックすると拡大表示します)

3.メソッド宣言のインクルード

 MiniSmtpMailerの機能を利用したいソースファイル(cpp)で、"MiniSmtpMailer.h"をインクルードします(図3)。 すると、MiniSmtpMailerのメソッドを利用できるようになります。

MiniSmtpMailer.hのインクルード
(図3)MiniSmtpMailer.hのインクルード


MiniSmtpMailer.dllのメソッドの定義とその意味

ここでは、MiniSmtpMailer.dllのメソッドについて解説します。メソッドはすべてで次に示す6種類です。

  1. SmtpGetVersion バージョンの取得
  2. SmtpInit    初期化
  3. SmtpSetMessage ヘッダおよびメッセージの登録
  4. SmtpAddFile   添付ファイルの登録
  5. SmtpSendMail  メール送信
  6. 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に属します。


Multisoft-labホーム    質問等の受付



Copyright © 2004-2005 Multisoft-lab   All rights reserved.