ACCESSで作った情報管理ツール(メーラー機能付)CDOで送信,Winsockで受信するバージョン

●動作環境
 ・ nskdcm42000.mdbはAccess2000のMDBファイルです。
 ※ Access2000がインストールされたWindows2000またはXPのパソコンで、動作します。
   CDOWinsock(WSOCK32.DLL)が必要ですが、これらはWindows標準的な機能です。

●機能概要
 ・ Eメール,資料,報告書,議事録などの情報の登録,印刷
 ・ 添付ファイルの保存
 ・ Eメールの送受信
 ※ 機能的には、シンプルです。
 ※ インターネットへの自動接続機能はありません。
    モデムやTAで接続する環境でEメールの機能を利用する場合は、手動で接続して下さい。
 ※ Access2000のMDBファイルなので、追加/変更が可能です。

●初期設定
 ・ ファイルはLZH形式で圧縮されています。
 ・ 解凍すると、nskdcm42000.mdbというファイルが作成されます。
 ・ 作業用のフォルダを準備して下さい。
    まず、Cドライブ直下に「maildata」というフォルダを作成して下さい。
    作成したフォルダの中に「temp」というフォルダを作成して下さい。
 ・ nskdcm42000.mdbをダブルクリックして起動して下さい。(単独で動作します)
 ・ メールユーザを追加して下さい。
 ・ 取引先を登録しておくと、メールの宛先をコンボボックスから選択できます。
 ※ 取引先と自社情報の項目には、この機能に必要ないものを含んでいます。
     これは、私どもの「販売管理システム」と互換を持たせるためです。
     「販売管理システム(Access97,Access2000のMDB)」は、中川システム開発からダウンロードできます。

●使用方法
 ・ [ ? ]ボタンをクリックすると説明が表示されますので、参考にして下さい。

BASP21を利用したバージョン → http://www.ynsk.co.jp/nsk/knowhow//nskdcm.htm
CDOでデコードするバージョン → http://www.ynsk.co.jp/nsk/knowhow//nskdcm5.htmお勧め!

メールを送信するときは、CDOがエンコードしてくれますが、受信時にWSOCK32.DLLデコードしてくれません。
独自のコーディングでデコードしています。
トライ&エラーを繰り返し、日本語英語のメールは、ほぼ読めるようになりました。
以外の言語の場合は、当然、文字化けして読めません!
英語のメールでも「Windows-1252」などのcharsetで書かれたメールは文字化けすることがあります。

以下のエンコードに対処しました(したツモリです)。間違っているかも知れません
    ISO-2022-JP(base64とquoted-printable)
    UTF-8(quoted-printableと8bit)
    ISO-8859-1(base64とquoted-printable) (RFC1345の特殊文字には対応していません)
    &#xxxxx;形式のエンコード
    base64形式でエンコードされた添付ファイル

あくまでも無保証ですが、自分で作ろうと思っている方には、参考になるでしょう。
ソースコードは、完全公開です。(美しさに自信はありませんが.....)

ダウンロード(Access2000版)

●補足
 ・ B_POP3(モジュール)……メールの受信とデコードを行います。
    「Private Const c_WorkDir非消去 As Integer = -1」というコーディングがあります。
    -1のままだと、1ユーザごとに上記作業用のフォルダをクリアします。
    複数件のメールを受信した場合、作業用のフォルダには全件分のファイル(中間結果)が残ります。
    デバック時、1ユーザごとに受信すれば、中間結果を追えるので、有効なことがあります。
    ファイルには、「mail1.txt」,「mail2.txt」.....などの番号を付けています。
    0にすると、作業用のフォルダには最後の1件分のファイルしか残りません。
    安定した運用段階に入れば、0にした方がディスク負荷は小さくなります。

  モジュール内に、コメント(説明)を書き加えましたので、参考にして下さい。

●POPFileへの対応
 POPFileによる迷惑メールのフィルタリングができます。
 [受信]をクリックしたとに表示されるポップアップ画面に、「POPFile」というチェックボックスがあります。
 オンにして受信すると「POPFile」経由、オフならPOP3サーバから直接受信します。
 メニューで[ドキュメント]をクリックすると表示される一覧の画面に、「bad」というチェックボックスがあります。
 オフでは「件名(Subject)」に「bad」という文字がないメールが表示され、
 オンにすると「bad」が付いたメール(POPFileによって迷惑メールと判定されたメール)が表示されます。
 この機能を使うためにはPOPFileインストールが必要です。
 POPFile側の設定によって、
 迷惑メールには「件名(Subject)」に「bad」という文字が設定されるようにして下さい。

 ※ POPFileがインストールされてない環境でも、「POPFile」というチェックボックスをオフにすれば、受信できます。
 ※ 万一、誤ってオンにした場合、特殊な環境を除き、自分自身(127.0.0.1)から受信しようとして空振るだけです。

変なメールへの対応

POP3サーバから受信したデータを眺めていると、変なメールがあることに気付きます。
例えば「To:」(宛先)を示す行自体が無いメールもありました。
From:」(差出人)の表示が(文字化けせず)ちゃんと読めるのに崩れているメールもあります。
どちらも、内容はスパムでした。
To:」や「From:」が取り出せない変なメール件名の先頭に「[Bad ]」という文字を付けるようにしました。
※ 該当のコーディング(モジュール)の位置には注釈(コメント)を入れてあります。

Subject:」(件名)の行に?マークが並んでいて読めないスパムメールをしばしば見掛けます。
この読めない件名をエンコードする試みは、あっけなく断念しました。
POP3サーバから受信した直後のデータを16進で見ても3F(?)が並んでいました。
POP3サーバに到達した時点で、崩れていると思われます。
元は日本語の「Subject:」(件名)が、SMTPサーバを通る間に崩れたと推測されます。

メールの日付(Date)ですが、「Date:」から取得するのがでしょう。
しかし、「Date:」は、確証はありませんが、メーラーが設定しているようです。
パソコンの時刻を取っているとすると、精度も低い可能性があります。
中には、「Date:」に年を含まないメールもありました。
そこで、「Received:」から日付(日時)を取得するようにしました。
「Received:」は、SMTPサーバが書き込むと思われるので、内容も安定しているようです。
タイムラグも大きいとは考え難いので、実用的に、問題が少ないと思います。
SMTPをリレーした場合、下側に記述された「Received:」の方が、送信元に近いと推測しました。
いちばん下側の「Received:」から取得するようにしています。
国外のSMTPを通ってくるメールもあるので、時差の表示も見て、日本の時刻に読み替えるようにしました。

ホームページに載せてからも、テストや改善をしています。

XPでテストしていると、「無効なオブジェクトを参照.....」というようなエラーのポップアップが出たことがあります。
詳しいことは解っていませんが、ADOのバージョンを上げることが対策になると思います。

ADOのバージョンを上げるには、モジュールのデザインビューで
[ツール]-[参照設定]のコマンドメニューを選択して、参照設定のウィンドウを開いて下さい。
現在は、「Microsoft ActiveX Data Objects 2.5 Library」にしています。
不安定な現象は、「Microsoft ActiveX Data Objects 2.1 Library」で起こりました。
変更する際は、先に中止する参照のチェックをオフにし、下にスクロールして、追加する参照をチェックして下さい。

2008年7月29日以前にダウンロードされた方は、上のリンクから再度ダウンロードされると最新をご覧頂けます。

ご意見、お問い合わせは → 

ACCESSの使い方トップページ



〒745-0801 山口県周南市大字久米327-145
中川システム開発 ホームページ
Tel(0834)28-0205 Fax(0834)28-1272