- このソフトは、babaq (Tatsuo Baba)さんが作成されたメール送受信API BSMTP.DLLをHSPから利用するための拡張プラグインです。
- この拡張プラグインを用いると、HSPからメールの送信・受信が簡単にできます。
- この拡張プラグインを利用するためには、予めBSMTP.DLLがインストールされている必要があります。
- このソフトはフリーで無保証です。使用・添付は御自由にお使いいただけますが、 トラブルには対応できないので各自の責任の下で行なって下さい。また、転載の際はアーカイブを変更しない状態で行なってください。 各著作物の取り扱いに注意してください。
- HSP ver2.5 以上で使用できます
- WinNT4(sp5) 上の HSP ver2.5 で動作を確認しています
- Windows 95/98 でも動くはず・・・です。(^^;)
BsmtpHsp.hpi v0.01 (2000/02/08) LZH圧縮ファイル(24KB)
http://homepage1.nifty.com/dateshim/soft/bsmtphsp.lzh(ソース付き) Download
| BsmtpHsp.hpi | 拡張プラグイン本体 |
| BsmtpHsp.as | インクルード用スクリプト |
| BsmtpHsp.cpp | プラグインのソースファイル |
| Send_Test.as | サンプルスクリプト(送信テスト) |
| Recv_Test.as | サンプルスクリプト(受信テスト) |
| index.html | このドキュメント |
インストーラーは付属していないので手動でインストールしてください。手順は以下の通りです。
T このプラグインを使用するためには babaq (Tatsuo Baba)さんが作成されたメール送受信API BSMTP.DLLが必要です。ここから入手してインストールしてください。 U ファイルを解凍しBsmtpHsp.hpiを、HSED2.EXEおよび、HSP2.EXEのあるフォルダと同じ場所に置いてください。 V BsmtpHsp.asをスクリプトと同じフォルダ、もしくはcommonフォルダにコピーしてください。 スクリプトを作成する場合は、スクリプトの先頭に必ず
#include "BsmtpHsp.as"という行を追加 してください。以後、BsmtpHsp.hpiでサポートされる命令が使用可能になります。W BsmtpHsp.hpiは他のHSP拡張プラグインと同様に、EXEファイルを作成した場合でも BsmtpHsp.hpiをEXEファイルと同じディレクトリに置かないと動作しません。 また、同様にpackfileにプラグインを追加することはできません。
インストールで作成したファイルを全て削除してください。レジストリは使用しないのでご安心を。(^^;)
スクリプトの先頭に#include "BsmtpHsp.as"
という行を追加することによって、以下の命令が使えるようになります。
命令およびその機能 【設定命令】 bh_setitem メールの送受信に関する項目を設定 bh_setbuf 受信用バッファを設定 【メール送信命令】 bh_sendmail メールを送信する 【メール受信命令】 bh_pop3stat メールの数と総バイト数を取得する bh_pop3list メールのリストを取得する bh_pop3save メールを受信・ファイルに保存する bh_getnext bh_pop3save命令で受信したメールをバッファに順次読み込む bh_readmime RFC822形式のファイルをバッファに読み込む 【クリーンアップ命令】 bh_clean 後処理をする 【参照命令】 bh_version BsmtpHsp.dllのバージョンを取得する Commands ・設定命令
bh_setitem - メールの送受信に関する項目の設定 bh_setitem p1,p2
[解説]
- p1 設定する内容が格納されている変数名 (文字列型変数)
- p2 設定する項目名 (文字列)
メールの送受信に関する項目(サーバ名、送信先、メールアドレス等)を設定します。項目名には下記の表にある値を使用することができます。[関連命令]成功するとstatに0を返し、メモリ不足などの原因で失敗するとstatに1を返します。 また、項目名が下記の表中に無いものであれば128番のエラーを出してHSPを停止させます。
p2 に指定する文字列 用途 項目名 内容 備考 送信 SMTP メール送信に用いるSMTPサーバ名 IPアドレスでも可
ポート番号&タイムアウトも指定可FROM メールの送信元 TO メールの送信先 最大8192バイト,512ID (Ver2.0.1.13)
タブ区切りで複数指定可SUBJECT メールのサブジェクト(題名) ""を指定すればサブジェクトなしで送信 BODY メールの本文 ""を指定すれば本文なしで送信 FILE メールに添付するファイル名 フルパスで指定
タブ区切りで複数指定可受信 POP3 メール受信に用いるPOPサーバ名 IPアドレスでも可。
タブ区切りでポート番号を指定。USER POPサーバに送信するユーザ名 PASS POPサーバに送信するパスワード WORKDIR 受信したメールを保存するフォルダ 省略時はカレントフォルダを使用
SMTP メール送信に用いるSMTPサーバ名を指定します
bh_sendmail 命令を実行する前に、必ず設定してくださいSMTPサーバは次の形式で指定されます
[host.domain/]server[:port[:timeout]]
host.domain - ホスト名とドメイン名。省略できます
server - サーバ名か IPアドレス
port - ポート番号。省略すると25
timeout - タイムアウト(秒)。省略すると120[sample] SMTPサーバをsmtp.foo.ne.jpに設定s_smtp="smtp.foo.ne.jp"
bh_setitem s_smtp,"SMTP"
FROM 送信元のメールアドレスを指定します
bh_sendmail 命令を実行する前に、必ず設定してください[sample] 送信元をuser@foo.ne.jpに設定s_from="user@foo.ne.jp"
bh_setitem s_from,"FROM"
TO メールの送信先メールアドレスをタブ(\t)区切りで指定します
cc/bcc/reply-toや任意のヘッダも設定する事ができます
(詳細はBSMTP.DLLのマニュアルを見てください)
bh_sendmail 命令を実行する前に、必ず設定してください[sample] 送信先にuser1@foo.ne.jp(佐藤)とuser2@foo.ne.jp(鈴木)を設定s_smtp="佐藤<user1@foo.ne.jp>\t鈴木<user2@foo.ne.jp>"
bh_setitem s_smtp,"TO"
SUBJECT 送信するメールの題名を指定します.日本語も使用可能です
bh_sendmail 命令を実行する前に、空文字でも必ず設定してください[sample] 題名を「題名です」と設定s_subj="題名です"
bh_setitem s_smtp,"SUBJECT"
BODY 送信するメールの本文を指定します.日本語にはS-JISコード以外を使わないで下さい
半角カナは、全角カナに変換されます
改行(\n)を入れて1行の長さがあまりにも長くならないように注意してください
bh_sendmail 命令を実行する前に、空文字でも必ず設定してください[sample] 本文を「内容が無いよぉ」と設定s_body="内容が無いよぉ"
bh_setitem s_body,"BODY"
FILE メールに添付するファイル名をフルパスで指定します
複数指定する場合はタブ(\t)区切りで指定します[sample] 添付ファイルにD:\home\user\mail.txtを設定s_file="D:\\home\\user\\mail.txt"
bh_setitem s_file,"FILE"
POP3 メール受信の際に用いるPOP3サーバ名を指定します
bh_pop3stat bh_pop3list bh_pop3save 命令を実行する前に、必ず設定してください[sample] POP3サーバをpop.foo.ne.jpに設定s_pop3="pop.foo.ne.jp"
bh_setitem s_pop3,"POP3"
USER メール受信の際に用いるユーザ(アカウント or ログイン)名を指定します
bh_pop3stat bh_pop3list bh_pop3save 命令を実行する前に、必ず設定してください[sample] POP3サーバにアクセスするユーザ名をiamuserに設定s_user="iamuser"
bh_setitem s_user,"USER"
PASS メール受信の際に用いるパスワードを指定します
bh_pop3stat bh_pop3list bh_pop3save 命令を実行する前に、必ず設定してください[sample] POP3サーバにアクセスするパスワードをthisispass設定s_pass="thisispass"
bh_setitem s_pass,"PASS"
WORKDIR メール受信の際に用いる作業用フォルダを指定します
空文字列が設定された場合は、カレントフォルダが設定されます
bh_pop3save bh_getnext bh_readmime命令を実行する前に設定してください[sample] 作業用フォルダにC:\tempを設定s_wdir="C:\\temp"
bh_setitem s_wdir,"WORKDIR"bh_sendmail bh_pop3stat bh_pop3listt bh_pop3save bh_getnext bh_readmimebh_setitem
bh_setbuf - メール受信用バッファの設定 bh_setbuf p1,p2
[解説]
- p1 バッファに設定する変数名 (文字列型変数)
- p2 設定するバッファ名 (文字列)
メールを受信する際に使用するバッファを設定します。 bh_getnextやbh_readmime命令を実行する前に必ず設定してください。 バッファ名には下記の表にある値を使用することができます。[関連命令]バッファは十分な大きさの領域を予め確保しておく必要があります。 またバッファの設定後はsdim命令等でバッファの再確保をしないで下さい。 もし、再確保をした場合は再度bh_setbufでバッファを設定してください。
成功するとstatに0を返します。 また、バッファ名が下記の表中に無いものであれば128番のエラーを出してHSPを停止させます。
p2 に指定する文字列 用途 バッファ名 内容 受信 HEAD メールヘッダを保存するバッファを指定します BODY メール本文を保存するバッファを指定します FILE 取得した添付ファイルのリストを保存するバッファを指定します
[sample] 文字列型変数s_headを8192バイト確保しヘッダ取得用バッファに設定sdim s_head,8192
bh_setbuf s_head,"HEAD"bh_getnext bh_readmimebh_setbuf
・メール送信命令
bh_sendmail - メールを送信する bh_sendmail [解説]
bh_setitem命令で設定した内容でメールの送信を行ないます[関連命令]bh_sendmail命令を実行する前に、予めbh_setitem命令で必要な情報(SMTP,FROM,TO,SUBJECT,BODY,FILE) を設定しておく必要があります。
また、メール送信後はbh_setitemで設定したTO,SUBJECT,BODY,FILEの内容がクリアされます. 再度メールを送信する場合はこれらの値を再設定してください。成功するとstatに1以上を返します(BSMTP.DLLのBSendMail関数の戻り値)
また、refstrには実行結果の詳細を記したメッセージが保存されます。
[sample] smtp.foo.ne.jpを使いmyaddr@foo.ne.jpを送信元にしてyou@foo.ne.jp宛てに 題名「どもです」本文「ほげほげ」のメールを送信するs_temp="smtp.foo.ne.jp" : bh_setitem s_temp,"SMTP"
s_temp="myaddr@foo.ne.jp" : bh_setitem s_temp,"FROM"
s_temp="you@foo.ne.jp" : bh_setitem s_temp,"TO"
s_temp="どもです" : bh_setitem s_temp,"SUBJECT"
s_temp="ほげほげ" : bh_setitem s_temp,"BODY"
bh_sendmail
if stat<1 : dialog refstr,1,"Error!"bh_setitembh_sendmail
・メール受信命令
bh_pop3stat - POP3サーバにアクセスしメールの数と総バイト数を取得する bh_pop3stat p1
[解説]
- p1 総バイト数を保存する変数名 (数値型変数)
bh_setitem命令で設定したPOP3サーバにSTATコマンドを送り、サーバに保存されている メールの数とメールの総バイト数を取得します。[関連命令]bh_pop3stat命令を実行する前に、予めbh_setitem命令でPOP3サーバにアクセスするために必要な情報を設定しておく必要があります。 (POP3,USER,PASS)
成功するとstatにメールの数、パラメータp1にはメールの総バイト数を返します。 また、失敗した場合refstrにエラーの詳細を記したメッセージが保存されます。
[sample] pop.foo.ne.jpにユーザ名myid、パスワードnaisyoでアクセスし メールの数とメールの総バイト数を取得するi_size=0
s_temp="pop.foo.ne.jp" : bh_setitem s_temp,"POP3"
s_temp="myid" : bh_setitem s_temp,"USER"
s_temp="naisyo" : bh_setitem s_temp,"PASS"
bh_pop3stat i_size
if refstr=="" {
dialog "Mail="+stat+"\nSize="+i_size
} else {
dialog refstr,1,"Error!"
}bh_setitembh_pop3stat
bh_pop3list - POP3サーバにアクセスしメールのリストを取得する bh_pop3list p1
[解説]
- p1 メールのリストを保存する変数名 (文字列型変数)
bh_setitem命令で設定したPOP3サーバにLISTコマンドを送り、サーバに保存されている メールのリストを取得します。[関連命令]bh_pop3list命令を実行する前に、予めbh_setitem命令でPOP3サーバにアクセスするために必要な情報を設定しておく必要があります。 (POP3,USER,PASS)
また、文字列型変数p1は予め十分な大きさの領域を確保しておく必要があります。成功するとstatにメールの数、パラメータp1には次の形式でメールのリストが保存されます。
1つのメールには、題名・送信者・受信日時がTAB(\t)区切りで格納されており、メール間は改行(\n)によって区切られています。リストを処理する際は、notepad命令でリストから1つのメールの情報を取り出し、getstr命令で各項目を取り出すと便利です。
また、失敗した場合refstrにエラーの詳細を記したメッセージが保存されます。
p1 に格納されるファイルリストの形式 Subject: 題名 \t From: 送信者 \t Date: 受信日時 \n Subject: 題名 \t From: 送信者 \t Date: 受信日時 \n ・
・
・\t ・
・
・\t ・
・
・\n Subject: 題名 \t From: 送信者 \t Date: 受信日時 \n
[sample] pop.foo.ne.jpにユーザ名myid、パスワードnaisyoでアクセスし メールリストを取得するsdim s_list,10240
s_temp="pop.foo.ne.jp" : bh_setitem s_temp,"POP3"
s_temp="myid" : bh_setitem s_temp,"USER"
s_temp="naisyo" : bh_setitem s_temp,"PASS"
bh_pop3list s_list
if refstr=="" {
dialog "Mail="+stat+"\n[List]\n"+s_list
} else {
dialog refstr,1,"Error!"
}bh_setitembh_pop3list
bh_pop3save - POP3サーバにアクセスしメールを受信・ファイルに保存する bh_pop3save p1,p2,p3
[解説]
- p1 受信したメールのファイル名リストを保存する変数名 (文字列型変数)
- p2 受信するメールの番号指定 (文字列)
- p3 削除フラグ (数値)
bh_setitem命令で設定したPOP3サーバにSAVE系のコマンドを送り、サーバに保存されている メールを受信し、ローカルマシンにファイル(RFC822形式)として保存します。[関連命令]パラメータp2は受信するメール番号を文字列で指定します。"ALL"を指定すると、POPサーバに保存されている全てのメールを受信します。 "n"(nは数字)と指定すると、サーバに保存されているn番目の (bh_pop3listで取得したメールリストの n行数に相当する)メールを受信します。また、"n-m"のようにハイフォンで数字を続けて指定すると 「n番目からm番目までのメールを読み込む」ことができます。
p2 に指定するパラメータ p2の値 読み込まれるメール 実際の使用例 ALL 全てのメール(256まで) bh_pop3save buff,"ALL",0 n n番目のメール bh_pop3save buff,"5",0 n-m n番目からm番目までのメール bh_pop3save buff,"1-4",0 パラメータp3は受信するメールをサーバーに残すかどうかを指定します。p3の値を0にした場合、サーバにメールを残します。 p3の値を1にした場合、受信したメールをサーバから削除します。 bh_pop3save命令を実行した直後は、ローカルマシンのハードディスクにメールが保存されるだけで、メールの内容はbh_setbuf命令で指定したバッファには読み込まれていません。 メールの内容をバッファに読み込むためにはbh_getnext命令を実行してください。
p3 に指定するパラメータ p3の値 動作 0 受信するメールをサーバに残す 1 受信するメールをサーバから削除する bh_pop3save命令を実行する前に、予めbh_setitem命令でPOP3サーバにアクセスするために必要な情報を設定しておく必要があります。 (POP3,USER,PASS,WORKDIR)
また、文字列型変数p1は予め十分な大きさの領域を確保しておく必要があります。成功するとstatに取得したメール数、パラメータp1で指定されたバッファには 保存されたメールのファイルリストが格納されます。
ファイルリスト中のファイル名はフルパスで格納されており、各ファイル名は改行(\n)によって区切られています。 リストから1つのファイル名を取り出す場合はnotepad命令を用いると簡単です。また、失敗した場合refstrにエラーの詳細を記したメッセージが保存されます。
[sample] pop.foo.ne.jpにユーザ名myid、パスワードnaisyoでアクセスし POPサーバにある全てのメールを取得し、作業用フォルダC:\tempに保存する。メールはサーバから削除しない。sdim s_list,4096
s_temp="pop.foo.ne.jp" : bh_setitem s_temp,"POP3"
s_temp="myid" : bh_setitem s_temp,"USER"
s_temp="naisyo" : bh_setitem s_temp,"PASS"
s_temp="C:\\temp" : bh_setitem s_temp,"WORKDIR"
bh_pop3save s_list,"ALL",0
if refstr=="" {
dialog "Mail="+stat+"\n[List]\n"+s_list
} else {
dialog refstr,1,"Error!"
}bh_setitem bh_getnext bh_readmimebh_pop3save
bh_getnext - bh_pop3save命令で受信したメールをバッファに読み込む bh_getnext p1
[解説]
- p1 読み込むメールの範囲 (数値)
bh_pop3save命令で受信したメールをbh_setbuf命令で 指定したバッファに逐次、読み込みます。bh_pop3save命令によって 複数のメールを受信した場合は、bh_getnext命令を実行する度に次のメールを順番にバッファへ読み込みます。[関連命令]パラメータp1はバッファに読み込むメールの範囲を指定します。
bh_getnext命令を実行する前に、予めbh_setbuf命令で必要な受信用バッファを設定しておく必要があります。 (HEAD,BODY,FILE)
p1 に指定するパラメータ p1の値 読み込まれる範囲 設定が必要なバッファ名 0 メールヘッダのみ HEAD 1 ヘッダと本文 HEAD,BODY 2 ヘッダ、本文、添付ファイルリスト HEAD,BODY,FILE メール中に添付ファイルの情報が含まれていて、p1に2が指定されていた場合、添付ファイルをbh_setitem命令のWORKDIRで指定した作業用フォルダに展開し、 そのファイルのプルパスを受信バッファFILEに返します。また、添付ファイルが複数ある場合は展開されたファイルのフルパスが 改行(\n)で区切られたリスト形式で返されます。
成功するとstatにまだbh_getnext によってバッファに読み込まれていないメール数が格納されます。値が0であれば、全てのメールが読み込まれたことになります。
また、失敗した場合refstrにエラーの詳細を記したメッセージが保存されます。
[sample] pop.foo.ne.jpにユーザ名myid、パスワードnaisyoでアクセスし POPサーバにある全てのメールを取得し、ヘッダ部分を表示する。メールはサーバから削除しない。sdim s_list,4096
sdim s_head,8192
s_temp="pop.foo.ne.jp" : bh_setitem s_temp,"POP3"
s_temp="myid" : bh_setitem s_temp,"USER"
s_temp="naisyo" : bh_setitem s_temp,"PASS"
bh_setbuf s_head,"HEAD"
bh_pop3save s_list,"1",0
if refstr=="" {
if stat==0 {
dialog "No mail"
end
}
repeat stat
bh_getnext 0
dialog "残り="+stat+"\n[HEAD]\n"+s_head
loop
} else {
dialog refstr,1,"Error!"
}bh_setbuf bh_pop3savebh_getnext
bh_readmime - RFC822形式で保存されたメールファイルの内容をバッファに読み込む bh_readmime p1,p2,p3
[解説]
- p1 RFC822形式でメールが保存されているファイル名 (文字列型変数)
- p2 読み込むメールの範囲 (数値)
パラメータp1で指定されるRFC822形式で保存されたメールファイルの内容をbh_setbuf命令で指定したバッファに読み込みます。[関連命令]パラメータp2はバッファに読み込むメールの範囲を指定します。
ファイル中に添付ファイルの情報が含まれていて、p2に2が指定されていた場合、添付ファイルをbh_setitem命令のWORKDIRで指定した作業用フォルダに展開し、 そのファイルのプルパスを受信バッファFILEに返します。また、添付ファイルが複数ある場合は展開されたファイルのフルパスが 改行(\n)で区切られたリスト形式で返されます。
p2 に指定するパラメータ p2の値 読み込まれる範囲 設定が必要なバッファ名 0 メールヘッダのみ HEAD 1 ヘッダと本文 HEAD,BODY 2 ヘッダ、本文、添付ファイルリスト HEAD,BODY,FILE bh_getnext命令を実行する前に、予めbh_setbuf命令で必要な受信用バッファを設定しておく必要があります。 (HEAD,BODY,FILE)
また、失敗した場合refstrにエラーの詳細を記したメッセージが保存されます。
[sample] ファイル選択ダイアログを開き、 メール内容を保存したファイルからヘッダ情報を取得します。sdim s_wdir,256
sdim s_head,8192
bh_setbuf s_head,"HEAD"
dialog "",16
s_temp=refstr
bh_readmime s_temp,0
if refstr=="" {
dialog "[HEAD]\n"+s_head
} else {
dialog refstr,1,"Error!"
}bh_setbuf bh_pop3savebh_readmime
・クリーンアップ命令
bh_clean - 後処理をします bh_clean [解説]
プラグインの後処理をします。通常は、HSPの終了時に自動的に呼び出されるので、 スクリプト中で明示的に使用する必要はありません。[関連命令]
bh_clean
・参照命令
このプログラムはフリーで無保証です。よって、このプログラムを使用して発生した、いかなる損害も保証いたしません。
暫定版なので今後、仕様が変更される可能性が高いです。ご了承ください。
使用・添付は自由に行ってくださって結構です。再配布・転載の際はアーカイブの内容を変更しない状態であればOKです。
BmstpHsp.hpiの著作権は だてしむ にあります。BMSTP.DLLは babaq (Tatsuo Baba)さんの著作物です。
ソースが付属しているので改造も可能ですが、改造モノをネットに流すときとかはオリジナルと区別できるような配慮をお願いします。m(_ _)m
HSPの作者 おにたまさんと、BSMTP.dllの作者 babaq (Tatsuo Baba) さんに深く感謝します。ONION software HOMEPAGE - http://www.at-m.or.jp/~onitama/index.html
Baba Centerfolds - http://www.hi-ho.ne.jp/babaq/index.html
ver 0.01 (2000/02/08) 暫定公開バージョン
このプラグインはHSP MLにおいてiwaiwaさんが作成された 正規表現&漢字コード変換DLL"iwaext.dll"のことが話題になったのが作成のキッカケでした。iwaiwaさんが紹介されていたBabaqさんのホームページに足を運ぶと、私のようなへなちょこプログラマーなら感涙モノの便利なDLLがごろごろ しているじゃありませんか!!
そこに公開されていたBSMTP.DLLを見て、現在作成中のソフトに付けようと思っていたメール機能が、こんなカンタンにHSPでも使えたら・・ と思い、早速作成したものがこのプラグインです。
自作ソフトへの組み込み用に作成したので、正直言って使い勝手は悪いと思います。(^^;) 直せる所があれば直したいので 要望があればドンドンお願いします。
最後の最後に・・・恒例ながら(汗)バグを発見した際は、私だてしむまで報告をしていただければ幸いです。
だてしむソフトウエア開発局 http://www.mynet.ne.jp/~simodate/E-mail : dateshim@nifty.com (だてしむ)