送信には、CDO(Microsoft Collaboration Data Objects)を利用しています。
受信は、Winsock(WSOCK32.DLL)です。(一般的なPOP3サーバから受信できるよう、Winsockを使いました。)
独自コーディングでデコードするサンプルも、Winsockで受信しますが、デコードは独自のロジックです。
それに対し、このサンプルは、CDOとADO(Active Data Object)のStreamを使ってデコードしています。
Winsock(WSOCK32.DLL)とCDO,ADOが必要ですが、これらは全てWindowsの標準的な機能です。
CDOを使ったデコードのテクニックについて、上原様から貴重なアドバイスを頂きました。
上原様のお陰で、挫折しかけた状況から脱出できました。
心より感謝致します。
一般的なインターネットプロバイダなどのPOP3サーバから、CDOでメールを受信することは困難なようです。
マイクロソフトが積極的に推奨するのは、エクスチェンジ(Exchange)への統合だと理解できます。
しかし、ユーザの状況によっては、一気にエクスチェンジ(Exchange)の導入にに踏み切れるとは限りません。
ストレートな道ではありませんが、下記のような選択肢が残されていることに感謝します。
Winsockを使ってPOP3サーバと交信すれば、バイト型の構造体(変数)にメールを受信することは可能です。
受信した構造体は、バイナリーのまま何の変換もせず、eml形式でディスクに保存できます。
保存したファイルをADODBのStreamとしてロードすると、CDOを介して参照できるようになります。
参照した時点で、自動的にデコードされているので、コーディングでデコードを意識することはありません。
つまり、デコードは「Windowsにお任せ!」ということになります。
根拠の無い推測ですが、Outlookなどと同等のデコード性能が期待されます。
試しに使っていますが、問題は見つかっていません。その上、「速い!」と実感しました。
テストした環境は、Windows2000とXP-Proです。
受信の処理速度をもう少し詳しく比較してみます。
パソコンや通信回線、メール(POP3)サーバなどの環境によって、違った結果が出ることもあります。
単に弊社の(貧弱な)環境で僅かなテストを行った印象程度の情報です。何の保障もありません。
毎日、やってくるスパムの山は、そのほとんどが添付ファイルを含まない文字ベースのメールです。
(HTML形式でリンクした画像などを含む場合もありますが、受信時点では文字だけです。)
ちょうど良いので、このスパム(数十件以上)を受信してテストしました。
BASP21を利用したケースに比べ、受信に要する時間は半分以下と圧倒的な速さでした。
「OutlookExpress」とは同程度の所要時間でした。
次に、比較的大きな添付ファイルを伴うメールで、試してみました。
約8MBのLZH形式のファイルを添付してWindows2000の環境で受信するとBASP21の方が高速でした。
時間的に5%程度速く、さすがBASP21だと思いました。
XPでも同じ比較をしてみると、今度はこのサンプルの方が10%程度高速でした。
ただし、CPUやメモリも違うので、正確な比較ではありません。
個人的な意見ですが、添付ファイル付はBASP21とほぼ『互角』でしょう。
「OutlookExpress」で同じメールを受信してみると、「OutlookExpress」の方が10%以上短い時間で受信しました。
しかし、「OutlookExpress」は、受信した時点で、添付ファイルのデコードはしていないと予測されます。
受信に要する時間の比較対象としては適当でないと思われます。
その分を差し引くと、独断とヤマ勘で、ほぼ同等と割り切ります。
以上のような多少雑なテスト結果から、乱暴に判断し、『使えそう!』という結論に達しました。
また、BSMTP.DLL(BASP21)の添付ファイルの処理について、その研ぎ澄まされた性能を再認識しました。
独自のデコードを試みて解ったのですが、文字のデコードについてCDOは大変優秀な通訳です。
優秀な助っ人としてのCDOくんに感謝しつつ、彼に頼むのは現実的な選択だと思います。
|
|
|
|