E-mail送受信プラグイン
   BsmtpHsp.hpi

ver 0.01 (2000/02/08)

...

戻る

このソフトは?

 
  • このソフトは、babaq (Tatsuo Baba)さんが作成されたメール送受信API BSMTP.DLLをHSPから利用するための拡張プラグインです。
  • この拡張プラグインを用いると、HSPからメールの送信・受信が簡単にできます。
  • この拡張プラグインを利用するためには、予めBSMTP.DLLがインストールされている必要があります。
  • このソフトはフリーで無保証です。使用・添付は御自由にお使いいただけますが、 トラブルには対応できないので各自の責任の下で行なって下さい。また、転載の際はアーカイブを変更しない状態で行なってください。 各著作物の取り扱いに注意してください。
▲top

動作環境

▲top  

ダウンロード

  
BsmtpHsp.hpi v0.01 (2000/02/08)
LZH圧縮ファイル(24KB) 
http://homepage1.nifty.com/dateshim/soft/bsmtphsp.lzh(ソース付き)
Download
 
▲top

ファイル構成

 
BsmtpHsp.hpi 拡張プラグイン本体
BsmtpHsp.as インクルード用スクリプト
BsmtpHsp.cpp プラグインのソースファイル
Send_Test.as サンプルスクリプト(送信テスト)
Recv_Test.as サンプルスクリプト(受信テスト)
index.html このドキュメント
▲top

インストール

インストーラーは付属していないので手動でインストールしてください。手順は以下の通りです。
  
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にプラグインを追加することはできません。
▲top

アンインストール

インストールで作成したファイルを全て削除してください。レジストリは使用しないのでご安心を。(^^;)
▲top

使用方法(命令リファレンス)

スクリプトの先頭に

#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_readmime
bh_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_readmime
bh_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_setitem
bh_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_setitem
bh_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命令で各項目を取り出すと便利です。 

p1 に格納されるファイルリストの形式
Subject: 題名 \t From: 送信者 \t Date: 受信日時 \n
Subject: 題名 \t From: 送信者 \t Date: 受信日時 \n


\t

\t

\n
Subject: 題名 \t From: 送信者 \t Date: 受信日時 \n
また、失敗した場合refstrにエラーの詳細を記したメッセージが保存されます。 
 
[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_setitem
bh_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にした場合、受信したメールをサーバから削除します。 
 
p3 に指定するパラメータ
p3の値 動作
0 受信するメールをサーバに残す
1 受信するメールをサーバから削除する
bh_pop3save命令を実行した直後は、ローカルマシンのハードディスクにメールが保存されるだけで、メールの内容はbh_setbuf命令で指定したバッファには読み込まれていません。 メールの内容をバッファに読み込むためにはbh_getnext命令を実行してください。 

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_readmime
bh_pop3save
bh_getnext - bh_pop3save命令で受信したメールをバッファに読み込む
bh_getnext p1
 
p1  読み込むメールの範囲  (数値)
 
[解説]
bh_pop3save命令で受信したメールをbh_setbuf命令で 指定したバッファに逐次、読み込みます。bh_pop3save命令によって 複数のメールを受信した場合は、bh_getnext命令を実行する度に次のメールを順番にバッファへ読み込みます。 

パラメータp1はバッファに読み込むメールの範囲を指定します。  

p1 に指定するパラメータ
p1の値 読み込まれる範囲 設定が必要なバッファ名
0 メールヘッダのみ HEAD
1 ヘッダと本文 HEAD,BODY
2 ヘッダ、本文、添付ファイルリスト HEAD,BODY,FILE
bh_getnext命令を実行する前に、予めbh_setbuf命令で必要な受信用バッファを設定しておく必要があります。 (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_pop3save
bh_getnext
bh_readmime - RFC822形式で保存されたメールファイルの内容をバッファに読み込む
bh_readmime p1,p2,p3
 
p1  RFC822形式でメールが保存されているファイル名  (文字列型変数)
p2  読み込むメールの範囲  (数値)
 
[解説]
パラメータp1で指定されるRFC822形式で保存されたメールファイルの内容をbh_setbuf命令で指定したバッファに読み込みます。 

パラメータp2はバッファに読み込むメールの範囲を指定します。  

p2 に指定するパラメータ
p2の値 読み込まれる範囲 設定が必要なバッファ名
0 メールヘッダのみ HEAD
1 ヘッダと本文 HEAD,BODY
2 ヘッダ、本文、添付ファイルリスト HEAD,BODY,FILE
ファイル中に添付ファイルの情報が含まれていて、p2に2が指定されていた場合、添付ファイルをbh_setitem命令のWORKDIRで指定した作業用フォルダに展開し、 そのファイルのプルパスを受信バッファFILEに返します。また、添付ファイルが複数ある場合は展開されたファイルのフルパスが 改行(\n)で区切られたリスト形式で返されます。 

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_pop3save
bh_readmime


クリーンアップ命令  

bh_clean - 後処理をします
bh_clean

[解説]

プラグインの後処理をします。通常は、HSPの終了時に自動的に呼び出されるので、 スクリプト中で明示的に使用する必要はありません。 
[関連命令]

 

bh_clean


参照命令  

bh_version - BmstpHsp.hpiのバージョンを取得します
bh_version

[解説]

本プラグインBmstpHsp.hpi(BSMTP.DLLではありません)のバージョンを取得します。 

実行するとシステム変数statにバージョン番号×100の値を返します。(ver 0.10 → 10)
 
[sample]

BmstpHsp.hpiのバージョンが0.01かどうかをチェックする
bh_version
if stat=1 : dialog "VER 0.01です"
[関連命令]

 

bh_version
 

注 意

このプログラムはフリーで無保証です。よって、このプログラムを使用して発生した、いかなる損害も保証いたしません。
暫定版なので今後、仕様が変更される可能性が高いです。ご了承ください。
使用・添付は自由に行ってくださって結構です。再配布・転載の際はアーカイブの内容を変更しない状態であればOKです。
BmstpHsp.hpiの著作権は だてしむ にあります。BMSTP.DLLは babaq (Tatsuo Baba)さんの著作物です。
ソースが付属しているので改造も可能ですが、改造モノをネットに流すときとかはオリジナルと区別できるような配慮をお願いします。m(_ _)m
▲top

謝 辞

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
▲top

改訂履歴

 
ver 0.01   (2000/02/08)  暫定公開バージョン
▲top

いろいろ

このプラグインはHSP MLにおいてiwaiwaさんが作成された 正規表現&漢字コード変換DLL"iwaext.dll"のことが話題になったのが作成のキッカケでした。

iwaiwaさんが紹介されていたBabaqさんのホームページに足を運ぶと、私のようなへなちょこプログラマーなら感涙モノの便利なDLLがごろごろ しているじゃありませんか!!

そこに公開されていたBSMTP.DLLを見て、現在作成中のソフトに付けようと思っていたメール機能が、こんなカンタンにHSPでも使えたら・・ と思い、早速作成したものがこのプラグインです。

自作ソフトへの組み込み用に作成したので、正直言って使い勝手は悪いと思います。(^^;) 直せる所があれば直したいので 要望があればドンドンお願いします。

最後の最後に・・・恒例ながら(汗)バグを発見した際は、私だてしむまで報告をしていただければ幸いです。

▲top

一次配布元および連絡先

だてしむソフトウエア開発局 http://www.mynet.ne.jp/~simodate/

E-mail : dateshim@nifty.com (だてしむ)