VBScriptでの追加処理プログラムを利用して空メールから送信元アドレスを取得する方法

弊社メールサーバー製品に対応した空メールでのアドレス取得処理方法を以下に紹介します。

「メール制御」の設定
1.任意のメールアドレスについて、「メール制御」の設定を行い、自動応答または自動転送を許可します。
2.「メール制御」ダイアログボックス内の「追加処理プログラム」欄に、以下の方法で設定を完了した追加処理プログラムを指定します。

事前にダウンロードコーナーから「追加処理プログラム作成キット2 SPA-DLL-PWRAPPER(※1)」をダウンロードし、"pwrapper.dll" を取り出して、プログラムインストールフォルダにコピーしてください。追加処理プログラム自体は、Windowsに含まれる "cscript.exe"(※2)からVBScriptを呼び出す方法で行います。
(※1 32bit版専用DLLはダウンロードコーナーに用意されていますが、64bit版専用DLLを入手する場合はお問い合わせが必要です)
(※2 Windows 2000以降に含まれ、コマンドプロンプトで動作するVBScript実行用インタプリタプログラム)

「メール制御」の追加処理プログラム欄に設定する内容
フォルダ名については実際の環境を確認した上で正しく指定してください。32bit版E-Postシリーズを64bitOS環境にインストールしている場合は、"C:\Program Files (x86)\"になっています。
・E-Post Mail Server シリーズ/E-Post Mail Server (x64) シリーズ

"C:\Program Files\EPOST\MS\pwrapper.dll" c:\winnt\system32\cscript.exe?GetRecipentAddr.vbs


以下は、VBScript サンプルプログラムのソースです。
拡張子".MSG"を".$CP"に変更すると、処理中の".RCP"ファイル内の送信元レシピエントの保存ファイルが取得できますので、空メールからのアドレス自動取得処理がVBScriptで可能になります。

VB Script サンプルソース (GetRecipentAddr.vbs)

Set A=WScript.Arguments
Set fs = WScript.CreateObject("Scripting.FileSystemObject")

' Argumentから対象のRCPファイル(.$CP)をファイルの位置を割り出す
mMSG = A(1)
n = InStrRev(mMSG, ".", -1)
mRCP = Mid(mMSG , 1, n ) + "$cp"

' トリガとなったMSG,RCP($CP)ファイルのフォルダ位置をファイルに保存
' 空メールアドレスのみ記録したいなら以下の4行は不要
set fout= fs.CreateTextFile("C:Program Files\EPOST\MS\filename.txt")
fout.Write mMSG & vbCr
fout.Write mRCP & vbCr
fout.Close

' RCP($CP)ファイルから送信元エンベロープを取り出す
Set fin = fs.OpenTextFile(mRCP, 1)
mMID = fin.ReadLine
mRP = fin.ReadLine
fin.Close
email = InStr(mRP, " ")

' 送信元エンベロープをファイルに保存(空メールアドレス取得)
set fout= fs.CreateTextFile("C:Program Files\EPOST\MS\recpient.txt")
fout.Write Mid(mRP, email+1) & vbCr
fout.Close

(注意)このサンプルプログラムは、受領した「メール」のアドレスをrecpient.txtに保管します。
新たな「メール」が受領された場合は、上書きされますので目的に応じて処理内容を書き換えてください。