counter

Visual Basicサンプル

SMTPクライアント


VBで作成したSMTPクライアントで、ActiveX.DLLとして動作します。ダウンロードして頂くファイルには、ActiveX.DLLそのもののプロジェクトと、ActiveX.DLLを呼び出すプロジェクトを統合したプロジェクト・グループが入っていますので、開発環境から、即、メールの送信が可能です。


利用の方法として、通常のアプリケーションから呼び出すことはもちろん、Windows Scripting Hostや、Active Server Pagesと組み合わせて、メールの自動送信を行うことを想定して作成しました。


VB6版のみ

download smtpclient.zip(ソース・ファイル)/ shortcutOneDriveへ smtpclientsetup6.zip(セットアップ・ファイル)


特徴:

改定日 内 容
1998/04/14 WinsockコントロールのDataArrivalイベントのなかでGetDataメソッドを実行するように修正。DataArrivalでフラグだけを立て、あとでGetDataする方法の場合、接続が切れてしまったときにデータが取れない。
1998/04/15 文字コードの内部処理を全面的に改訂。ANSI-SJISベースで処理していたものを、UNICODEベースに変更。SMTPサーバからのmultiline replyに対応。コマンドの送信、リプライの受信の同期確保を修正。
1998/04/16 通信中のエラー発生に対応。SMTPで定義されているエラー、WinsockコントロールのErrorイベントで検知されたエラー、その他Visual BasicのOn Error Gotoでトラップされたエラーについて、呼び出し側のアプリケーションで情報を得ることができる。
1998/04/19 ActiveX DLLのスレッドモデルを、シングル・スレッドから、アパートメント・モデルに変更。ServiceError(標準モジュール)に含まれていたグローバル変数を廃止し、SmtpClient(クラスモジュール)のモジュールレベル変数に移行。
1998/04/20 モジュールの構成を見直し、APIMemoryCopy(標準モジュール)が不要であったためを削除。ASPからSendMailメソッドを実行した際にDLL読み込みに失敗する障害に対して、frmSmtpClient(フォーム・モジュール)を修正。WSHとASPについて、動作確認。
1998/04/30 クラスの構成(モジュールの構成)を見直し。TCPクライアントとして動作する最下層のフォーム、SMTPのみを実装した中間層のクラス、宛先や日本語SubjectなどからMIMEヘッダーを生成したり、日本語本文をJISコードとESCシーケンスの組み合わせに変換したりする機能を持つ最上層のクラス、というように、機能ごとの階層化を厳密にする。
1998/06/16 SmptMailerクラスの、半角カナを全角カナに変換するルーチンを変更。クラス内に自前の変換テーブルを持っていたものを、StrConv関数を使用するものに変更。
1998/08/14 クラスのInitializeイベントとTerminateイベントの内容を検討し、オブジェクトの生成と破棄、フォームの生成、Unload及び破棄を明示的に行うように変更。
1998/08/24 正しく全角カナのみを使って日本語メールを作ったにもかかわらず、charset=us-asciiのままとなっていた不具合を修正。
1998/09/21 ASPからSendMailメソッドを実行した際にDLL読み込みに失敗する障害(1998/04/20の改訂記事を参照)が、依然発生することを確認。検討の結果、Collectionの内容をスキャンするときに、For Each ... In Collection / Next ... を用いると障害がでるものと判断。For I = 1 to Collection.Count / Next I という記述に変更。
2001/02/15 bccのアドレスをヘッダー情報に付加するという愚挙を解消。smtpclientsetup.zip(VB5によるコンパイル)はこれ以降の修正を反映していません。これ以降の修正を反映させたものはsmtpclientsetup6.zip(VB6によるコンパイル)です。smtpclient.zipでダウンロードしていただけるソースコードはこれ以降の修正を反映しています。
2001/06/27 通信障害によりsmtpが中途切断された時に本ソフトもエラーとなる不具合を修正。tcp通信を扱うWinsockコントロールが返すエラー値が長整数形であるにもかかわらず、エラー値を保存する変数を整数型としていたためオーバーフローが発生していた。
2009/5/19 VB6でプロジェクトが開けることの確認。VB6より以前のバージョンは対応しない。セットアップ・ファイルにはMSWINSCK.OCX(6.1.9782)を含む。このOCXによりMicrosoft Winsock Control 6.0(SP6)が提供される。
2009/5/20 サーバーへの最初の接続動作が不調な場合にデッドロックに陥る不具合を修正。(修正の必要性のご指摘、改善方法のご提案を相当以前に頂いていたものの、長年にわたって放置していました。お詫びします。)
2015/3/8 VB6版セットアップ・ファイルの配布をOneDriveからに変更。