具体可参考一下网址。win7,win8已经本人测试,能够正常应用。
http://www.hi-ho.ne.jp/babaq/basp21.html
原文
BASP21 DLL(びーえーえすぴーにじゅういち)は、ASPの VBScript やVisual Basic、EXCEL VBA WSH(Windows Scripting Host)などから使える汎用のコンポーネントです。
2003年2月11日現在、67メソッドをサポート。インストーラーも完備。 2007年6月29日更新
BASP21 は、ライセンスフリーです。商用利用もご自由にどうぞ。詳しくは、Baba Centerfolds FAQ とBASP21 小史をご覧ください。
- Down Load! Bsmtp20070629-587.lzh(119KB) 2007/06/29 Update!
Bsmtp.dll(V2,7,6,29) ,Basendm.exe(V2,7,5,31)の提供。通常、SMTPのポート番号は25です。 ポート番号587で送信したいときは、"サーバ名:587" で送信可能ですが、 プログラム変更なしでポート587で送信するにはこちらをお使いください。 bsmtp.dll を置換するだけでポート587送信が可能です。 - Down Load! Bsmtp20070531.lzh(119.1KB) 2007/05/31 Update!
Bsmtp.dll(V2,7,5,31) ,Basendm.exe(V2,7,5,31)の提供。 Subject/From/To内の改行コード(CRおよびLF)を空白に変更する修正追加。 以下の不具合修正。2007/03/24 提供の Bsmtp20070303.lzh(bsmtp.dll) を使用すると BSendmプログラムやSendMailExメソッドが動作しない。 以下のメッセージで Bsendm.exe が実行できない。 「プロシジャーエントリポイント_BSendMailHook@8が ダイナミックリンクラリBsmtp.dllから見つかりませんでした。」 原因:BsendM.exe が古い bsmtp.lib ファイルでリンクされていたため、 Bsendm.exe が bsmtp.dll のロードに失敗する。 対処:不具合を修正したバージョンBsmtp20070531.lzhの提供。 解凍後、bsmtp.dllとBsendM.exe を置換してください。
- Down Load! Bsmtp20070303.lzh (70.1KB) 2007/03/24 Update!
bsmtp.dll(V2,7,3,3)の提供。Subject内の改行コード(CRおよびLF)を空白に変更する修正追加。 - Down Load! BASP21-2003-0211.exe (1.44MB) 2003/02/11 Update!
MD5チェックサム: 26a3b30c3efcb0db9b2ce1b7557b131f - Down Load! BASP21-20010911.exe (1002KB) 2001/09/11 ひとつ前のバージョン
MD5チェックサム: 76706c89a1daffaca2d96159a83584ea
BASP21のインストール
適当なディレクトリに BASP21.exe をダウンロードします。 インストールは、BASP21.exe を実行するだけ。すぐ終わります。 IISでBASP21.DLL を使っている場合、IIS Admin/WWWサービスを終了させてからインストールしてください。Windowsシステムディレクトリに次のファイルがコピーされます。 これ以外のファイルは、一切インストールされませんので安心です。
●BASP21.DLL (160KB) 本家(COMコンポーネント) ●BSMTP.DLL (156KB) SMTP/POP3/FTP エンジン ●BREGEXP.DLL (72KB) 正規表現 エンジン ●BCOUNT.DLL (140KB) カウンター エンジン ●BSENDM.EXE (80KB) コマンドライン メーラー ●BINETX.DLL (84KB) HTTP/FTP エンジン ●BASP21.TLB (10KB) BASP21 タイプライブラリ(VBやVC++で参照設定で使う)
BASP21のアンインストール
[コントロールパネル]-[アプリケーションの追加と削除]でBASP21を選択します。インストーラを使わずにインストールしたいとき
- 一旦、インストーラを使って他のマシンにインストールしてファイルを展開します。 次のファイルがsystem32 ディレクトリにインストールされます。
BASP21.DLL BSMTP.DLL BREGEXP.DLL BCOUNT.DLL BSENDM.EXE BINETX.DLL BASP21.TLB
- これらのファイルをターゲットマシンのsystem32 ディレクトリにコピーします。
注意: system32 以外のディレクトリにコピーする場合は、PATH環境変数にその ディレクトリのパスを含めないと 実行時にBASP21.DLLから使うBSMTP.DLL などのDLLの ロードに失敗することがあります。
- [ファイル名を指定して実行]で regsvr32 コマンドでBASP21.DLL をレジストリに登録します。
regsvr32 パス名\basp21.dll
アンインストールは、regsvr32 の /u オプションで BASP21.DLLをレジストリから削除します。
regsvr32 /u パス名\basp21.dll
その後、ファイルを削除します。
ファイルの依存関係
それぞれのファイルの依存関係を示します。BASP21関連のDLLは、すべて Visual C++ 6.0で開発されてます。 MFCやVBランタイム、Wininet.dllは使っていません。- BASP21.DLL
KERNEL32.dll
USER32.dll
ADVAPI32.dll
ole32.dll
OLEAUT32.dll
BREGEXP.DLL
BSMTP.DLL
BCOUNT.DLL
BINETX.DLL
BSENDM.EXE
- BSMTP.DLL
KERNEL32.dll
USER32.dll
OLEAUT32.dll
WSOCK32.dll
- BREGEXP.DLL
KERNEL32.dll
OLEAUT32.dll
- BCOUNT.DLL
KERNEL32.dll
USER32.dll
OLEAUT32.dll
- BSENDM.EXE
KERNEL32.dll
USER32.dll
GDI32.dll
BSMTP.DLL
- BINETX.DLL
KERNEL32.dll
USER32.dll
ADVAPI32.dll
OLEAUT32.dll
WSOCK32.dll
BASP21の使い方
CreateObjectメソッドで"basp21" という名前でオブジェクトを作成します。Set bobj = Server.CreateObject("basp21") ' ASP Set bobj = CreateObject("basp21") ' VBA や VB Set bobj = WScript.CreateObject("basp21") ' WSH ソケットオブジェクトの場合: Set bsocket = Server.CreateObject("basp21.socket") ' ASP Set bsocket = CreateObject("basp21.socket") ' VBA や VB Set bsocket = WScript.CreateObject("basp21.socket") ' WSH FTP オブジェクトの場合: Set bftp = Server.CreateObject("basp21.FTP") ' ASP Set bftp = CreateObject("basp21.FTP") ' VBA や VB Set bftp = WScript.CreateObject("basp21.FTP") ' WSH作成したオブジェクトでメソッドを呼出します。
変数 = bobj.メソッド名(パラメータ)ASP(Active Server Pages)では global.asaファイルで事前に アプリケーションレベルでオブジェクトを作成できます。
<SCRIPT LANGUAGE=VBScript RUNAT=Server> SUB Application_OnStart Set Application("bobj") = Server.CreateObject("Basp21") END SUB </SCRIPT>aspファイルでは、事前に作成したオブジェクトを次のように 設定します。
Set bobj = Application("bobj")
BASP21についてのご質問は
まず、 FAQ を先にご覧ください。それから Response Center 2007/03/01 現在停止中。 へどうぞ。 BASP21 小史 もためになるかも。BASP21のメソッド一覧
- SendMail メール送信2003/02/11 Update!
- FlushMail メール一括送信2003/02/11 New!
- SendMailEx メール送信(非同期型)
- RcvMail メール受信
- ReadMail メール読込み
- Match パターンマッチ(Perl5互換)
- Replace 文字列置換(Perl5互換)
- Translate 文字列変換(Perl5互換)
- Split Split(Perl5互換)
- FGrep ファイルパターンマッチ
- FileCheck ファイルチェック
- Sort Sort
- ReadDir ディレクトリ一覧
- Space 空白
- IsNum 数字チェック
- HAN2ZEN 半角カナ変換
- RepTagChar HTMLタグ変換
- BinaryRead ファイルからバイナリ配列読み
- sprintf sprintfラッパー
- strftime strftimeラッパー
- Debug メモ帳に文字列書込み
- StrConv VB互換文字列変換
- BinaryWrite ファイルにバイト配列を書込む
- FormSaveAs HTMLファイルアップロード(ファイル書込み)
- FormFileName HTMLファイルアップロード(ファイル名)
- FormFileSize HTMLファイルアップロード(ファイルサイズ)
- Form HTMLファイルアップロード(テキスト読み)
- FormBinary HTMLファイルアップロード(バイナリ読み)
- Execute 外部プログラム実行
- Kconv 漢字コード変換
- KconvFile ファイル漢字コード変換
- BinaryConcat バイト配列結合
- DebugClear メモ帳ウィンドウのクリア
- SplitB Split(Perl5互換)バイト配列
- ByteArray 文字列からバイト配列
- MatchEx 拡張パターンマッチ
- Counter GIFカウンタ
- Version バージョン文字列を返す
- Base64 Base64エンコード/デコード
- ソケットオブジェクト6 メソッド
- FTPオブジェクト12 メソッド
- GetTempFile テンポラリファイル名を返す
- W3get URL(http:// ftp://)読込み
- MidB バイト配列アクセス
- MatchB バイト配列パターンマッチ
- SortMail メールのソート、選択
- Sleep 指定時間待機
- MD5 メッセージダイジェスト
- Execute2 外部プログラム実行
- CodePage プロパティ コードページ設定
BASP21のメソッドの説明
- SendMail
SMTPプロトコルでメールを送信します。同期型。
msg = bobj.SendMail(svname,mailto,mailfrom, subj,body,files) msg [out] : エラーメッセージ。 svname [in] : SMTPサーバ名またはメールファイルを保存するフォルダ(メールキュー) を指定します。 SMTPサーバ名は次の形式で指定します。 [host.domain/]server[:port[:timeout]] host.domain - BASP21 が動作しているホスト名とドメイン名。 省略できます。指定したほうが処理が早くなります。 server - サーバ名か IPアドレス。 port - ポート番号。省略すると25。 timeout - タイムアウト(秒)。省略すると120。 2003.02.08 New! メールキューを指定した場合は、送信データがメールファイルとして メールキューに保存されます。 メールキュー内のメールファイルは、FlushMailメソッドの呼び出しで SMTPサーバに送信されます。 メールキューに次のサブフォルダを作成しておくこともできます。 - sentサブフォルダ : FlushMailメソッドの実行で送信済みの メールファイルが保存されます。 - errサブフォルダ : FlushMailメソッドの実行で送信エラーの メールファイルが保存されます。 mailto [in] : 宛先メールID。タブで区切って複数指定できます。 cc/bcc/reply-toや任意のヘッダーもこの中にオプションで 指定できます。 mailfrom [in] : 送信元メールID。SMTP AUTH(認証)を使う場合、タブで区切って ユーザ名とパスワードを指定できます。 "ユーザ名:パスワード" & vbTab & "認証方式" 認証方式は、AUTH LOGIN (省略値)と AUTH CRAM-MD5 が使えます。 "user1:pass1" "user1:pass1" & vbTab & "LOGIN" "user1:pass1" & vbTab & "CRAM-MD5" バージョン20010911よりAUTH PLAINサポート。 "user1:pass1" & vbTab & "PLAIN" subj [in] : サブジェクト。""を指定すればサブジェクトなしで送信。 body [in] : 本文。""を指定すれば本文なしで送信。 files [in] : 添付ファイル名をフルパスで指定。"ファイルパス|別名|Content-type" ""を指定すれば添付ファイルなしで送信。 タブで区切って複数指定できます。 オプションとしてファイル名の後に"|"で区切って別名や Content-Typeを指定できます。 実際のファイル名とは別の名前で送信したいときに別名を使います。 Content-type は、メーラが添付ファイルを受信したときに 参照して特有の処理をするかもしれません。 Content-type を省略するとファイルの拡張子により 次のように設定されます。
添付ファイルの指定例: files="c:\temp\aa.txt|abc.txt" ' 別名指定 files="c:\temp\aa.txt||application/octet-stream" ' Content-type 指定 files="c:\temp\aa.txt|abc.txt|application/octet-stream" ' 別名+Content-type 指定 例: svname = "c:\mailqueue" ' メールキューのフォルダ名 svname = "odyssey" ' SMTP サーバマシン名 svname = "host1.who.com/odyssey:25:60" ' ドメイン名 + SMTP サーバマシン名 ' + PORT + TIMEOUT mailto = "あのひとさん<xxxxx@xxxx.xxx>" ' 宛先 mailfrom = "だれだれ<who@xxxx.xxx>" '差出し人 subj = "例のファイル" ' 件名 body = "こんちは" & vbCrLf & "さようなら" ' 本文 改行は、vbCrLfで ' 添付ファイル files = "c:\temp\file1.txt" & vbTab & "c:\temp\b21xx.tmp|file2.txt" rc = bobj.SendMail(svname,mailto,mailfrom, subj,body,files) if rc <> "" then ' エラーチェック rcにエラーメッセージが入ります end if メールヘッダーの使い方: SendMail/SendMailExメソッドの宛先メールIDパラメータの中にタブで区切って cc/bcc/reply-to キーワードを指定します。 任意のヘッダーは、">"文字をつけてそのまま指定します。 使用例: ●宛先が id1 、CC に id2、Message-IDヘッダーの例 mailto = "id1" & vbtab & "cc" & vbtab & "id2" & vbtab & ">Message-ID: 12345" ●宛先が id1とid2 、CC に id3の例 mailto = "id1" & vbtab & "id2" & vbtab & "cc" & vbtab & "id2" ●宛先が id1とid2 、CC に id3 id4 の例 mailto = "id1" & vbtab & "id2" & vbtab & "cc" & vbtab & "id3" & vbtab & "id4" ●宛先が id1 、BCC に id2の例 mailto = "id1" & vbtab & "bcc" & vbtab & "id2" ●宛先が id1 、CC に id2、BCCに id3の例 mailto = "id1" & vbtab & vbtab & "cc" & vbtab & "id2" & vbtab & "bcc" & vbtab & "id3" ●宛先が id1 、Reply-To に id2の例 mailto = "id1" & vbtab & "reply-to" & vbtab & "id2" ●CC に id2の例 mailto = "cc" & vbtab & "id2" ●BCC に id2の例 mailto = "bcc" & vbtab & "id2" ●Toヘッダーに代表IDを指定して他のメンバーのアドレスを含めない mailto = "common id" & vbtab & "bcc" & vbtab & "id1" & vbtab & "id2" & vbtab & "id3" ●SMTP AUTH を使う 2000.07.20 New! mailfrom = "<hoge@barbaz>" & vbTab & "user1:pass1" ' AUTH LOGIN mailfrom = "<hoge@barbaz>" & vbTab & "user1:pass1" & vbTab & "CRAM-MD5" ' AUTH CRAM-MD5 ●メール送信の拡張オプション 2000/01/23 のバージョンから次のオプションがサポートされます。拡張子 Content-type txt text/plain htm html text/html jpg jpeg image/jpeg gif image/gif bmp image/bmp zip application/x-zip-compressed doc application/msword xls application/vnd.ms-excel ppt application/vnd.ms-powerpoint exe dll application/vnd.ms-download eml mht mhtml nws message/rfc822 fdf application/vnd.fdf pdf application/pdf rmi audio/mid qt mov video/quicktime avi video/x-msvideo tiff image/tiff wav mp1 mp2 mp3 audio/wav als Audio/X-Alpha5 以外 application/octet-stream - ログモード2000.09.11 New! ">#log file-name" メール送信結果をファイルに書き出します。 mailto = ">#log c:\temp\maillog.txt" & vbTab & "<hoge@barbaz>"
- 保存モード2000.07.20 New! ">#save dir-name" 送信したメールを指定したディレクトリに保存します。 mailto = "<hoge@barbaz>" & vbTab ">#save c:\temp" 送信メールのファイル名は、タイムスタンプ形式で yyyymmdd-hhmmss.txtとなります。
- 代表宛先名 "@to-header" 先頭が"@" ならば 先頭の "@" を削除して To: ヘッダーとして送信します。 メールアドレス以外の名前を使えます。日本語も使えます。メーリングリストに最適。 必ず、bccあるいはcc と共に使うこと。 例: mailto = "@Centerfolds-ML-User" & vbTab & "bcc" & vbTab & "who@hoge.com" 次のように送信します。 To: Centerfolds-ML-User
- 転送モード ">#xfr file-name" 指定されたファイルを転送します。RcvMail メソッドで作成されたファイルを指定します。 To: ヘッダーは、削除されますので宛先を指定してください。 サブジェクトは、上書きされます。サブジェクトが"" なら元のサブジェクトをそのまま 送信します。 パラメータとして指定された本文と添付ファイルは、無視されます。 次のヘッダーは、ファイルから削除されます。 X-Mailer: X-Mail-Agent: Status: To: Return-Path: Delivered-To: 例1: mailto = "who@hoge.com" & vbTab & ">#xfr c:\mail\b21xxx.tmp" 例2: mailto = "@ML-user" & vbTab & ">#xfr c:\mail\b21xxx.tmp" & vbTab & "bcc" & vbTab & "who@hoge.com"
- 転送モード時のヘッダー削除 ">#d" 転送するメールの該当ヘッダーを削除したいときに指定します。 例: mailto = "@ML-user" & vbTab & ">#xfr c:\mail\b21xxx.tmp" & vbTab & ">#dcc:" & vbTab & "bcc" & vbTab & "who@hoge.com"
- Bcc ファイル入力モード ">#bcc file-name" メールアドレスをファイルから1行ずつ入力して メールを送信します。 送信アドレスは、ヘッダーとして送信しない Bcc として処理します メールアドレスは、メールIDのみを指定してください。 例: mailto = "@ML-user" & vbTab & ">#xfr c:\mail\b21xxx.tmp" & vbTab & ">#bcc c:\mai\mailto.txt" mailto.txt の内容: # comment 1桁目が "#" の行はコメントとして無視されます who@hoge.com who1@hoge.com who2@hoge.com
BASP21のメール送受信のメソッドのみをVisual BasicやVBAなどで使う場合は、 BASP21コンポーネントでなく、BSMTP.DLL を使うことをお勧めします。 配布するときに、BSMTP.DLL を添付するだけですみます。 VB Tipsを参照してください。 - FlushMail 2003/02/11 New!
メールキュー指定のSendMailメソッドで作成したメールファイルを送信します。 SMTPサーバへのコネクションは一度のみで複数メールファイルを効率よく送信できます。 送信後のメールファイルは、メールキューのsentサブフォルダに移動されます。 sentサブフォルダが存在しない場合は、メールファイルは削除されます。 送信エラーのメールファイルは、メールキューのerrサブフォルダに移動されます。 errサブフォルダが存在しない場合は、メールファイルはそのままで削除されません。
rc = bobj.FlushMail(svname,mailq[,logfile]) rc [out] : リターンコード。マイナスの値はエラーを示します。 1 以上 - 正常終了。送信されたメールファイル数を返します。 バックグラウンドモードの場合は送信予定メール数を返します。 -1 - ビジー。同一メールキューでFlushMailメソッド実行中。 -18 - メールキューが見つからない -26 - コネクトエラー。 -67 - bsendm.exeが実行できない。バックグラウンド(別プロセス)モード。 svname [in] : SMTPサーバを次の形式で指定。 [&][host.domain/]server[:port[:timeout]] & - バックグラウンド(別プロセス)モードで処理を実行します。 host.domain - BASP21 が動作しているホスト名とドメイン名。 省略できます。指定したほうが処理が早くなります。 server - サーバ名か IPアドレス。 port - ポート番号。省略すると25。 timeout - タイムアウト(秒)。省略すると120。 mailq [in] : メールキュー。メールファイルが保存されているフォルダ名を指定します。 以下のサブフォルダを作成しておくことができます。 sentサブフォルダ:送信済みのメールファイルを保存 err サブフォルダ:送信エラーのメールファイルを保存 logfile [in] : ログファイル名。省略できます。 送信結果をログファイルに記録します。 例: svname = "&smtp-server" ' SMTPサーバ名 バックグラウンド(別プロセス)モード svname = "smtp-server" ' SMTPサーバ名 mailq = "c:\mailqueue" ' メールキュー名 rc = bobj.FlushMail(svname,mailq) if rc < 0 then ' エラーチェック ' 0以下はエラーです。 end if
- SendMailEx
SendMailメソッドと機能は同じです。非同期型。メールの送信処理を 別プロセスで実行します。送信結果は、ログファイルに記録されます。
msg = bobj.SendMailEx(logname,svname,mailto,mailfrom, subj,body,files) msg [out] : エラーメッセージ。 logname [in] : 送信結果を記録するログファイル名をフルパスで 指定します。ログは、ファイルの最後に追加されます。 ログレコードをCSV形式で出力する場合は、ファイル名の前に "," かTAB を指定します。2000/11/18 New "," - カンマ区切り TAB - タブ区切り ファイル名の前に ">" をつけると前のログ内容は、削除されます。 例1:カンマ区切り logfile = ",c:\temp\log.txt" 例2:カンマ区切り新規作成 logfile = ",>c:\temp\log.txt" svname [in] : SMTPサーバを次の形式で指定。 [host.domain/]server[:port[:timeout]] host.domain - BASP21 が動作しているホスト名とドメイン名。 省略できます。指定したほうが処理が早くなります。 server - サーバ名か IPアドレス。 port - ポート番号。省略すると25。 timeout - タイムアウト(秒)。省略すると120。 mailto [in] : 宛先メールID。タブで区切って複数指定できます。 cc/bcc/reply-toや任意のヘッダーもこの中にオプションで 指定できます。 mailfrom [in] : 送信元メールID。SMTP AUTH(認証)を使う場合、タブで区切って ユーザ名とパスワードを指定できます。 "ユーザ名:パスワード" & vbTab & "認証方式" 認証方式は、AUTH LOGIN (省略値)と AUTH CRAM-MD5 が使えます。 "user1:pass1" "user1:pass1" & vbTab & "LOGIN" "user1:pass1" & vbTab & "CRAM-MD5" バージョン20010911よりAUTH PLAINサポート。 "user1:pass1" & vbTab & "PLAIN" subj [in] : サブジェクト。""を指定すればサブジェクトなしで送信。 body [in] : 本文。""を指定すれば本文なしで送信。 files [in] : 添付ファイル名をフルパスで指定。 ""を指定すれば添付ファイルなしで送信。 タブで区切って複数指定できます。 ファイル名の後に"|"で区切って別名を指定できます。 実際のファイル名とは別の名前で送信したいときに別名を使います。 例: logname = "c:\temp\maillog.txt" ' ログファイル名 svname = "odyssey" ' smtp サーバマシン名 mailto = "あのひとさん<xxxx@xxxx.xxx>" ' 宛先 mailfrom = "だれだれ<who@who.com>" '差出し人 subj = "例のファイル" ' 件名 body = "こんちは" ' 本文 ' 添付ファイル files = "c:\temp\file1.txt" & vbTab & "c:\temp\b2189.tmp|file2.txt" rc = bobj.SendMailEx(logname,svname,mailto,mailfrom, _ subj,body,files) if rc <> "" then ' エラーチェック rcにエラーメッセージが入ります end if
- RcvMail
POP3プロトコルでメールを受信します。受信したメールの内容はそのままファイルに 保存します。 保存したメールファイルの内容を読むには ReadMailメソッドを使います。
output = bobj.RcvMail(svname,user,pass,command,dirname) svname [in] : POP3サーバマシン名。タブで区切ってポート番号を指定できます。 user [in] : メールボックスのユーザ名。 pass [in] : メールボックスのパスワード。 2000/05/20 APOPをサポート APOP 認証をするには、パスワードの前に "a" または "A" に 1個の ブランクをつけます。 "a " & "xxxx" : サーバがAPOP 未対応なら通常のUSER/PASS 処理をします。 "A " & "xxxx" : サーバがAPOP 未対応ならエラーになります。 command [in] : コマンドを指定します。 STAT ...... メール数と総バイト数のみを返します LIST [n[-n2]] .. n番目からn2番目までのメールの Subject、From、Dateヘッダーの内容のみを返します。 n2を省略するとn番目のメールを読込みます。 nとn2を省略するとすべて(256まで)読込みます。 SAVE n[-n2] .... n番目のメールを受信します n2を指定するとn2番目までのメールを受信します。 SAVD n[-n2] ... n番目のメールを受信し、サーバのメールボックスから 削除します n2を指定するとn2番目までのメールを受信して削除します DELE n[-n2] ... n番目のメールをサーバのメールボックスから削除します n2を指定するとn2番目までのメールを削除します SAVEALL ... 全てのメール(256まで)を受信します SAVEALLD .. 全てのメール(256まで)を受信し、サーバのメールボックスから 削除します UIDL ...... メールのUIDLを返します。2000/11/18 New SIZE ...... メールのサイズを返します。2000/11/18 New DELU ...... 指定したUIDLX(後述)のメールをサーバから削除します。 2000/11/18 New UIDLではないので注意。受信ファイル名 = UIDLX の場合に便利。 dirname [in] : 受信したメールを保存するディレクトリ名を指定します。 2000/11/18 NewUIDL によるSAVE/SAVEALL コマンド拡張しました。 ディレクトリ名の前に ">" をつけると 保存ファイル名がUIDLXになり、 同一ディレクトリにすでに同名ファイルが存在する場合 (同じUIDLXのメール)、そのファイル名を返し、 メールを受信し直しません。 bobj.RcvMail(svr,user1,pass1,"SAVEALL",">e:\temp") ディレクトリ名の前に "<" をつけると 保存ファイル名がUIDLXになり、 同一ディレクトリにすでに同名ファイルが存在する場合 (同じUIDLXのメール)、そのファイル名を返しません。 すなわち、新着メールのみ返します。 bobj.RcvMail(svr,user1,pass1,"SAVeall","<e:\temp") UIDLX BASP21 用語でメールサーバからのメール固有のUIDL を ファイル名に対応させるため、 英数字とピリオド以外の文字をXをつけて16進文字に変換したIDです。 output [out] : メール受信の結果を配列で返します。配列内容はコマンドによって 次のようになります。エラーが発生した場合は、配列を返しません。 STAT - メール数と総バイト数。例:output(0) -> 2 4011 LIST - タブで区切られたSubject、From、Dateヘッダーの内容 例:output(0) -> "Subject: こんにちは\tFrom: xxxx@xxxx.xxx\t Date: 1998/09/15 11:11:30" output(1) -> "Subject: こんにちは2\tFrom: xxxx@xxxx.xxx\t Date:1998/09/15 12:11:30" SAVE/SAVD/SAVEALL/SAVEALLD - 受信したメールを保存したファイル名。 DELE - 削除したメール数を配列でない変数で返します 例: svname = "odyssey" ' POP3サーバマシン名 user = "who" ' メールボックス名 pass = "alibaba" ' パスワード dirname = "c:\mail\basp21" ' 保存ディレクトリ名 outarray = bobj.RcvMail(svname,user,pass,"SAVE 1-10",dirname) if IsArray(outarray) then ' OK ? for each file in outarray array2 = bobj.ReadMail(file,"subject:from:date:",dirname) if IsArray(array2) then ' OK ? for each data in array2 Response.Write Server.HTMLEncode(data) next endif next end if
- ReadMail
RcvMailメソッドで受信したメールを読込みます。 添付ファイルは、このメソッドで展開します。
output = bobj.ReadMail(file,para,dirname) file [in] : RcvMailメソッドで保存したファイル名をフルパスで指定します。 para [in] : 読みたいヘッダーを選択します。省略するとすべてのヘッダーが 読込まれます。 nofile: と指定すると添付ファイルは、保存されません。 nobody: と指定すると本文は、読み込まれません。 例: subject:from:date: 2000.12.17 New!Dateヘッダは、BASP21が動作する OS設定のローカル時間に変更されます。 dirname [in] : 添付ファイルを保存するディレクトリ名を指定します。 ファイル名は、MIMEで指定された名前で保存します。 名前なしHTMLメールは、mail.htmとして保存します。 同一ファイル名がディレクトリに存在する場合は、 デフォルトでは上書きされます。 ディレクトリ名の前に ">" あるいは "<" を指定すると、 添付ファイルの上書きをコントロールできます。2000.09.24 New! > : 既存の同名添付ファイルは、そのままで新しいファイルを xxx(n).xxx で書き込みます。 < : 既存の同名添付ファイルをxxx(n).xxx にリネームします。 output [out] : メール内容を配列で返します。ヘッダー、本文、添付ファイル名の 順番に設定されます。エラーが発生した場合は、配列を返しません。 例:output(0) -> To: xxxx@xxxx.xxx output(1) -> From: xxxx@xxxx.xxx output(2) -> Date: 1998/09/15 12:30:31 output(3) -> ..... output(4) -> Body: 本文 output(5) -> File: ファイル名1 output(6) -> File: ファイル名2 例: outarray = bobj.ReadMail(file,"subject:from:date:",dirname) if IsArray(outarray) then ' OK ? for each data in outarray Response.Write Server.HTMLEncode(data) next end if ' 添付ファイルを上書きしない outarray = bobj.ReadMail(file,"subject:from:date:",">" & dirname) if IsArray(outarray) then ' OK ? for i = 0 to UBound(outarray) ' 配列のサイズは UBound maildata = maildata & outarray(i) next maildata = Join(outarray,vbCrLf) ' 配列をCRLF で結合 end if
- Match
Perl5互換のパターンマッチ処理。
match = bobj.Match(regstr,target) match [out] : マッチ結果を返します。 0 マッチしない。 1 マッチ。 文字列 メタ文字() を使ったときのマッチ文字列。 regstr [in] : 正規表現文字列。最初の文字は、"/" または、"m"。 target [in] : 処理対象文字列。 例: input = "abc1234defgい" output = bobj.Match("/\d{4}/",input) ' 1 が返ります output = bobj.Match("/(\d{4})/",input) ' 1234 が返ります 注意:日本語を扱う場合は、正規表現でkオプションを指定してください。 output = bobj.Match("/(\d{4})/k",input)
- Replace
Perl5互換の文字列置換処理。
outstr = bobj.Replace(regstr,target) outstr [out] : 変換結果を返します。 regstr [in] : 正規表現文字列。最初の文字は、"s"。 terget [in] : 処理対象文字列。 例: ' すべての数字を<>で囲む。 input="123" output = bobj.Replace("s/([0-9])/<$1>/g",input) ' <1><2><3> ' 数字3桁ずつ<>で囲む input="1234567891234" output = bobj.Replace("s/(\d{3})/<$1>/g",input) ' <123><456><789><123>4 ' Cのコメント( /*と */ で囲まれている) を削除 input="a=1; /* this is comment */" output=bobj.Replace("s#/\*[^*]*\*+([^/*][^*]*\*+)*/##g",input) ' a=1; 注意:日本語を扱う場合は、正規表現でkオプションを指定してください。 output = bobj.Replace("s/(\d{3})/<$1>/kg",input)
- Translate
Perl5互換の文字列変換処理。
outcnt = bobj.Translate(regstr,target,result) outcnt [out] : 変換した文字数を返します。 regstr [in] : 正規表現文字列。最初の文字は、"tr"。 terget [in] : 処理対象文字列。 result [out] : 変換結果の文字列を返します。 例: count = bobj.Translate("tr/0-9/0-9/k",input,output) 注意:日本語を扱う場合は、正規表現でkオプションを指定してください。
- Split
Perl5互換のSplit処理。
result = bobj.Split(regstr,target[,limit]) result [out] : 結果の文字配列。 regstr [in] : 正規表現文字列。最初の文字は、"/"か"m"。 terget [in] : 処理対象文字列。 limit [in] : 戻す配列数の最大値。省略値0。0のときは無制限。 例: outarray = bobj.Split("/\s+/i",input,10) 注意:日本語を扱う場合は、正規表現でkオプションを指定してください。 outarray = bobj.Split("/\s+/ik",input,10)
- FGrep
テキストファイルを正規表現で検索してマッチした行を配列で返します。
rarray = bobj.FGrep(fname,regstr,limit[,opt]) rarray [out] : マッチした行(改行も含む)を配列で返します。 1行もマッチしないときあるいはエラーのとき、 配列を返しません。 regstr [in] : 正規表現文字列。最初の文字は、"/" または、"m"。 "" を指定するとすべてマッチします。 fname [in] : Grepするファイル名のフルパス。 limit [in] : 結果を返す配列の要素の最大数。1以上を指定します。 opt [in] : オプションを指定します。 1 - 逆順にファイルを読みます。 2 - 行番号をテキストの前につけます。 例: rc = bobj.FGrep("g:\exec.txt","/sql/i",10) rc = bobj.FGrep("g:\exec.txt","/sql/i",10,2) ' 行番号つき。 rc = bobj.FGrep("g:\exec.txt","",10,1) ' ファイルを逆順に読みます。 rc = bobj.FGrep("g:\exec.txt","/babaq/",10,1+2) ' ファイルを逆順+行番号つき。 if IsArray(rc) then ' 配列チェック 注意:日本語を扱う場合は、正規表現でkオプションを指定してください。
- FileCheck
ファイルが存在すればファイルサイズを返します。
fsize = bobj.FileCheck(fname) fsize [out] : 0以上 : ファイルが存在 -1 : ファイルがない -2 : ディレクトリである fname [in] : 調べるファイル名のフルパス。
- Sort
配列データをソートします。文字列の比較位置と長さを指定できます。
stime = bobj.Sort(sarray,asdes,soffset,slengh) stime [out] : 処理時間を返します。 -1のときはパラメータエラー。 sarray[in,out] : ソートする配列。結果もこの配列に返されます。 asdes [in] : 0 昇順ソート。1降順ソート。 soffset [in] : 文字列の比較位置のオフセット値。 slength [in] : 文字列の長さ。0を指定すると文字列すべて。 使用例: Dim a(4) a(0) = "900" a(1) = "800" a(2) = "700" a(3) = "600" a(4) = "500" result = a stime = bobj.Sort(result, 0, 0, 0)
- ReadDir
ディレクトリの中のファイル名を配列で返します。
farray = bobj.ReadDir(dirname & option) dirname [in] : ディレクトリ名のフルパスを指定します。 option [in] : オプション。 " :" の後に次の文字を指定します。 s - 順ソート S - 逆順ソート t - ファイルの更新日付でソート T - ファイルの更新日付とファイル名を返す D - サブディレクトリ名は返さない farray [out] : ディレクトリ内のファイル名やサブディレクトリ名を 配列で返します。 使用例: dir = "c:\data\*.*" option = " :St" ' 更新日付が新しい順にソート farray = bobj.ReadDir(dir & option) option = " :stT" ' 更新日付が古い順にソート。日付も返す。 farray = bobj.ReadDir(dir & option)
- Space
SJIS漢字の空白文字 X'8140' を返します。HTMLスペースをあけるときに便利。
sp = bobj.Space() sp [out] : 空白文字。
- IsNum
文字列の中が数字のみか調べます。
rc = bobj.IsNum(str) rc [out] : 0 数字以外の文字 1 数字のみ。 sstr [in] : 調べたい文字列。
- HAN2ZEN
文字列の中の半角カナを全角カナに変換します。濁音にも対応。
strout = bobj.HAN2ZEN(str) strout [out] : 変換後の文字列が返ります。 str [in] : 変換したい文字列。
- RepTagChar
HTMLのタグ文字を変更します。
outstr = bobj.RepTagChar(instr) outstr [out] : 結果の文字列が返ります。 instr [in] : 変換したい文字列。
- BinaryRead
ファイルを読込んで1バイトの配列を返します。
barray = bobj.BinaryRead(fname) barray [out] : バイナリが配列で返ります。 fname [in] : ファイル名をフルパスで指定します。 ASPでの使用例: barray = bobj.BinaryRead("g:\h.jpg") Response.BinaryWrite barray
- sprintf
C関数のsprintfのラッパーメソッド。
str = bobj.sprintf(format,val) str [out] : 結果の文字列が返ります。 format [in] : フォーマット文字。 val [in] : 数値や文字列。 例: str = bobj.sprintf("timestamp is %10d",123)
- strftime
C関数のstrftimeのラッパーメソッド。
str = bobj.strftime(fstr) str [out] : 結果の文字列が返ります。 fstr [in] : フォーマット文字。 例: TimeStamp = bobj.strftime("timestamp is %Y/%m/%d %X")
- Debug
メモ帳のウィンドウに指定した文字列を書込みます。 メモ帳は、あらかじめ起動しておいてください。起動していなければ 何もしません。
注意:ASP環境では動作しません。bobj.Debug(str[,opt]) str [in] : 書込みたい文字列を指定します。バイト配列の場合、16進で表示します。 opt [in] : 0 - 文字列(デフォルト)。1 - 16進表示。 例: bobj.Debug(barray) bobj.Debug(Array(a,b,c))) bobj.Debug barray,1 ' 16進表示
- StrConv
Visual BasicのStrConv関数と同じ機能。なぜかVBScriptでは サポートされていない貴重なメソッド。
outstr = bobj.StrConv(instr,type) outstr [out] : 結果の文字列が返ります。 instr [in] : 変換したい文字列。 type [in] : 変換タイプを数値で指定。組み合せて指定できます。 1:英大文字に変換 2:英小文字に変換 3:単語の先頭を英大文字に変換 4:半角文字 (1 バイト) を全角文字 (2 バイト) に変換 8:全角文字 (2 バイト) を半角文字 (1 バイト) に変換 16:文字列内のひらがなをカタカナに変換 32:カタカナをひらがなに変換 例: outstr = bobj.StrConv(instr,1) ' 英大文字に outstr = bobj.StrConv(instr,2+4) ' 英小文字かつ全角に
- BinaryWrite
1バイトの配列をファイルに書込みます。イメージファイルなどを ファイルとして保存するときに使います。
wlen = bobj.BinaryWrite(barray,fname[,mode]) wlen [out] : 書込んだバイト数が返ります。 0未満の値はエラーです。 -1 : 渡されたパラメータは、1バイトの配列ではありません。 -3 : ファイルを作成できません。 -4 : ファイルの書込みが失敗しました。 barray [in] : 1バイトの配列を渡します。 fname [in] : ファイル名をフルパスで指定します。 mode [in] : 上書きモード。0 : 新規作成。 1 : 追加書込み。 省略すると新規作成。 ASPでの使用例: wlen = bobj.BinaryWrite(barray,"g:\h2.jpg") wlen = bobj.BinaryWrite(barray,"g:\h2.jpg",1) ' 追加書込み
- FormSaveAs
HTMLのフォーム(ENCTYPE="multipart/form-data")でアップロードされた TYPE=FILEで指定したファイルの内容をファイルに保存します。 ファイルアップロードのサンプルは、 こちら。
wlen = bobj.FormSaveAs(barray,name,fpath) wlen [out] : 書込んだバイト数が返ります。 0未満の値はエラーです。 -1 : 渡されたパラメータは、1バイトの配列ではありません。 -2 : フォームの中に名前がありません。 -3 : ファイルを作成できません。 -4 : ファイルの書込みが失敗しました。 barray [in] : Request.BinaryReadメソッドで読込んだフォーム全体の内容。 name [in] : <INPUT>タグのNAMEタグで指定した名前を指定します。 fpath [in] : 書込むファイル名をフルパスで指定します。 同じファイル名が存在した場合、上書きされます。 ASPでの使用例: a=Request.TotalBytes barray=Request.BinaryRead(a) wlen = bobj.FormSaveAs(barray,"Filedata","g:\h3.jpg")
注意:NTサーバで使う場合は、ファイルを保存するディレクトリにアクセス権限を適切に 設定してください。 2001.9.11 バージョンよりForm*系メソッドを使う場合は、global.asaで作成した Applicationオブジェクトに保存したBASP21 オブジェクトを使わないでください。
Set Application("bobj") = Server.CreateObject("Basp21") - FormFileName
HTMLのフォーム(ENCTYPE="multipart/form-data")でアップロードされた ファイル名を返します。
filename = bobj.FormFileName(barray,name[,type]) filename [out] : TYPE=FILEタグで指定したファイル名が返ります。 barray [in] : Request.BinaryReadメソッドで読込んだフォーム全体の内容。 name [in] : <INPUT>タグのNAMEタグで指定した名前を指定します。 type [in] : 入力文字コード。デフォルトは、0。バージョン20010911以上でサポート。 0,1 - SJIS 2 - EUC 3 - JIS 4 - UNICODE UCS2 5 - UNICODE UTF8 ASPでの使用例: filename = bobj.FormFileName(barray,"Filedata")
- FormFileSize
HTMLのフォーム(ENCTYPE="multipart/form-data")でアップロードされた ファイルのサイズを返します。
filesize = bobj.FormFileSize(barray,name) filesize [out] : TYPE=FILEタグで指定したファイル名が返ります。 barray [in] : Request.BinaryReadメソッドで読込んだフォーム全体の内容。 name [in] : <INPUT>タグのNAMEタグで指定した名前を指定します。 ASPでの使用例: filesize = bobj.FormFileSize(barray,"Filedata")
- Form
HTMLのフォーム(ENCTYPE="multipart/form-data")で入力された内容を テキストで返します。Request.BinaryReadメソッドを呼ぶと、Request.Formメソッドが エラーで呼び出せなくなるため、Request.Formメソッドの代わりに使います。
str = bobj.Form(barray,name[,type]) str [out] : <INPUT>タグで入力された内容がテキストで返ります。 タグが複数ある場合、各データはタブで区切られます。 barray [in] : Request.BinaryReadメソッドで読込んだフォーム全体の内容。 name [in] : <INPUT>タグのNAMEタグで指定した名前を指定します。 type [in] : 入力文字コード。デフォルトは、0。バージョン20010911以上でサポート。 0,1 - SJIS 2 - EUC 3 - JIS 4 - UNICODE UCS2 5 - UNICODE UTF8 ASPでの使用例: yname = bobj.Form(barray,"yourname")
- FormBinary
HTMLのフォーム(ENCTYPE="multipart/form-data")で入力された内容を 1バイトの配列でデータで返します。 データベースに書込むときに便利です。
sarray = bobj.FormBinary(barray,name) sarray [out] : <INPUT>タグで入力された内容が1バイトの配列で返ります。 barray [in] : Request.BinaryReadメソッドで読込んだフォーム全体の内容。 name [in] : <INPUT>タグのNAMEタグで指定した名前を指定します。 ASPでの使用例: sarray = bobj.FormBinary(barray,"file1")
- Execute
外部プログラムを起動して標準出力を受取ります。JScriptでは Execute2メソッドを使います。
rc = bobj.Execute(command,mode,stdout) command [in] : プログラム名とパラメータを指定します。 mode [in] : 次のモードを数字で指定します。 0 - プログラムを起動して終了を待たずに戻ります。 1 - プログラムを起動して終了するまで待ちます。 標準出力を文字列で受取ります。 2 - プログラムを起動して終了するまで待ちます。 標準出力をバイナリで受取ります。 3以上の値 - プログラムの終了を指定した時間(msec)だけ 待ちます。指定した時間内に終われば標準出力を受取ります。 奇数の場合は、標準出力を文字列で、偶数の場合は 標準出力をバイナリで受取ります。 タイムアウトを指定したいときはこちらを使います。 stdout [out] : 標準出力を受取ります。 rc [out] : 処理結果を数字で返します。 0 - 正常終了。 -1 - コマンドエラー。プログラム名がおかしい。 -2 - タイムアウト。 使用例: rc = bobj.Execute("net view",1,stdout) Win32プログラム以外を起動するときは、cmd.exeで実行します。 ' WIndows NT rc = bobj.Execute("cmd.exe /c c:\lha.exe l basp21.lzh",1,stdout) Windows 95/98 rc = bobj.Execute("command.com /c c:\lha.exe l basp21.lzh",1,stdout)
- Kconv
文字列を指定した漢字コードに変換します。 変換前の漢字コードのタイプが不明の場合、自動認識します。
out = bobj.Kconv(instr,outtype[,intype]) instr [in] : 変換したい文字列(UNICODEの場合)、またはバイト配列。 outtype [in] : 変換後の漢字コードのタイプを数字で指定します。 0 - 変換せずに漢字タイプを数字で返します 1 - SHIFT JIS 2 - EUC 3 - JIS 4 - UNICODE UCS2 5 - UNICODE UTF8 6 - JIS 文字列タイプ2000/11/18 New intype [in] : 変換前の漢字コードのタイプが確定しているとき数字で指定します。 0 - 不明(省略値)。自動認識します。 1 - SHIFT JIS 2 - EUC 3 - JIS 4 - UNICODE UCS2 5 - UNICODE UTF8 6 - JIS 文字列タイプ2000/12/17 New out [out] : 変換後の漢字コードを文字列(UNICODEの場合)あるいはバイト配列で 返します。 outtype = 0 なら漢字のタイプを数字で返します。 使用例: jisarray = bobj.Kconv("馬場",3) ' UNICODE UCS2からJISに変換 outcode = bobj.Kconv(jisarray,4) ' JISからUNICODE UCS2に変換 注意:次のような場合、漢字コードの自動認識が失敗することがあります。 o SHIFT JISで半角カナのみ o 漢字文字数が少ない o UNICODE UTF8
- KconvFile
ファイルを読込んで指定した漢字コードに変換してファイルに書込みます。 変換前の漢字コードのタイプが不明の場合、自動認識します。
rc = bobj.KconvFile(infile,outfile,outtype[,intype]) infile [in] : 変換前のファイル名。 outfile [in] : 変換後に書込むファイル名。 outtype [in] : 変換後の漢字コードのタイプを数字で指定します。 0 - 変換せずに漢字タイプを数字で返します 1 - SHIFT JIS 2 - EUC 3 - JIS 4 - UNICODE UCS2 5 - UNICODE UTF8 intype [in] : 変換前の漢字コードのタイプが確定しているとき数字で指定します。 0 - 不明(省略値)。自動認識します。 1 - SHIFT JIS 2 - EUC 3 - JIS 4 - UNICODE UCS2 5 - UNICODE UTF8 rc [out] : 変換後のファイルの大きさを返します。マイナスの値は、エラーです。 outtype = 0 なら漢字のタイプを数字で返します。 -1 : パラメータエラー -2 : 変換前のファイルのオープンエラー -3 : 変換前のファイルのサイズが1以下 -4 : ファイルマッピングエラー -5 : ファイル読込みエラー -6 : 変換後のファイルオープンエラー -7 : メモリ不足 -8 : 変換後のファイル書込みエラー 使用例: len = bobj.KconvFile("c:\sjis.txt","c:\euc.txt",2,1) ' SHIFT JIS からEUCに変換 注意:次のような場合、漢字コードの自動認識が失敗することがあります。 o SHIFT JISで半角カナのみ o 漢字文字数が少ない o UNICODE UTF8
- BinaryConcat
バイト配列を結合します。
outarray = bobj.BinaryConcat(inarray1,inarray2) inarray1 [in] : 結合するバイト配列。 inarray2 [in] : 結合するバイト配列。 outarray [out] : 結合されたバイト配列。 使用例: outarray = bobj.BinaryConcat(array1,array2)
- DebugClear
メモ帳ウィンドウをクリアします。
bobj.DebugClear 使用例: bobj.DebugClear
- SplitB
Perl5互換のバイト配列のSplit処理。null文字を含んでいても可能。
result = bobj.SplitB(regstr,barray[,limit]) result [out] : 結果のバイト配列の配列。 regstr [in] : 正規表現文字列。最初の文字は、"/"か"m"。 barray [in] : 処理対象バイト配列。 limit [in] : 戻す配列数の最大値。省略値0。0のときは無制限。 使用例: outarray = bobj.SplitB("/\r\n\r\n/",input,2)
- ByteArray
文字列からバイト配列を返す。
result = bobj.ByteArray(instr[,type]) result [out] : 結果のバイト配列。 instr [in] : 文字列。 type [in] : 変換のタイプを数字で指定。 0 - 出力はSJISのバイト列。省略値。 1 - 入力を16進形式の文字列として解釈。 2 - 出力はUNICODEのバイト列。 使用例: outarray = bobj.ByteArray("000102",1) ' X'000102'
- MacthEx
パターンマッチの拡張版。
matcharray = bobj.MatchEx(regstr,target[,mode]) regstr [in] : 正規表現文字列。最初の文字は、"/" または、"m"。 target [in] : 処理対象文字列。 mode [in] : 処理モードを数字で指定。 0 - グループマッチ。省略値。 1 - すべてのマッチ。 matcharray [out] : マッチ結果を配列で返します。 グループマッチ: out(0) : マッチした文字列そのもの。 out(1) : マッチ文字列の前の文字列。 out(2) : マッチ文字列の後の文字列。 out(3) : グループ1の文字列。 out(4) : グループ2の文字列。 out(n) : グループnの文字列。 すべてのマッチ: out(0) : マッチした文字列1。 out(1) : マッチした文字列2。 out(2) : マッチした文字列3。 out(n) : マッチした文字列n。 使用例: ' HTML の<Hn>タグをすべて取出す marray=Bobj.MatchEx("/<h(\d).+<\/h\1>/ik",b,1)
- Counter
GIFカウンタイメージをバイト配列で返します。 本カウンタは、Muhammad A Muquit氏作成のCount Release 2.3 を マルチスレッドに変更したものです。実装は、 BCOUNT.DLLです。 イメージは8種類(dd=a - h)。イメージは、BCOUNT.DLL内部にリソース として含まれます。
barray = bobj.Counter(para,ctr) para [in] : Counterパラメータ。Count Release 2.3のパラメータを指定します。 パラメータの詳細はカウンタオプションを参照。 ctr [in] : カウンタの数値。 barray [out] : カウンタイメージのバイト配列。 使用例: ========================= ctr.html start =============== <HTML><HEAD><TITLE>BASP21 Counter Testing</TITLE></HEAD> <BODY BGCOLOR=#FFFFFF> <IMG SRC="ctr.asp?p=dd=a&ctr=ctr1"><BR> <IMG SRC="ctr.asp?p=dd=b&ctr=ctr2"><BR> <IMG SRC="ctr.asp?p=dd=c&ctr=ctr3"><BR> <IMG SRC="ctr.asp?p=dd=d&ctr=ctr4"><BR> <IMG SRC="ctr.asp?p=dd=e&ctr=ctr5"><BR> <IMG SRC="ctr.asp?p=dd=f&ctr=ctr6"><BR> <IMG SRC="ctr.asp?p=dd=g,ft=14&ctr=ctr7"><BR> <IMG SRC="ctr.asp?p=display=date"><BR> <IMG SRC="ctr.asp?p=display=clock"><BR> <IMG SRC="ctr.asp?p=dd=h&ctr=ctr8"><BR> </BODY></HTML> ========================= ctr.html end =============== ========================= ctr.asp start =============== <% set bobj = Application("bobj") p=Request("p") ctrname=Request("ctr") if len(ctrname) > 0 then Application.Lock() file=Server.MapPath ("/dir1") & "\" & ctrname & ".txt" Set FileObject = Server.CreateObject("Scripting.FileSystemObject") On error resume next Set inx = FileObject.OpenTextFile(file) Count = inx.ReadLine inx.Close ' ファイルのクローズ Count = Count + 1 ' カウンタのインクリメント Set outx = FileObject.CreateTextFile(file,True) outx.WriteLine Count outx.Close ' ファイルのクローズ Application.UnLock() end if Response.Expires=0 Response.Buffer=TRUE Response.Clear Response.ContentType ="image/gif" Response.BinaryWrite bobj.Counter(p,Count) Response.End %> ========================= ctr.asp end ===============
- Version
Version文字列を返します。どのバージョンのBASP21を使っているかがわかります。
Versionメソッドは、1999/09/25 のバージョンからサポートしてます。それ以前のバージョンでは このメソッドは存在しません。
ver = bobj.Version() ver [out] : バージョン文字(Mmm DD YYYY)。例:Oct 16 1999。 使用例: ver = bobj.Version()
- Base64
BASE64エンコード/デコード文字列を返します。
outstr = bobj.Base64(instr[,mode]) instr [in] : 変換前の文字列。 mode [in] : 変換モードを次のように数字で指定します。 0 - 省略値。BASE64 でエンコード。例:優香 -> l0SNgQ== 1 - BASE64 デコード。例:l0SNgQ== -> 優香 2 - ISO-2022-JP + BASE64 でエンコード。 例:優香 -> =?ISO-2022-JP?B?GyRCTSU5YRsoQg==?= 3 - ISO-2022-JP + BASE64 デコード。 例:=?ISO-2022-JP?B?GyRCTSU5YRsoQg==?= -> 優香 4 - URI エンコード。例:優香 .txt -> %97%44%8D%81%20.txt 5 - URI デコード。例:%97%44%8D%81%20.txt -> 優香 .txt 6 - BASE64 でファイルをエンコード。 文字列に入力ファイル名と出力ファイル名をタブで区切って指定します。 例:c:\data\input.jpg [TAB] c:\data\input.txt 7 - BASE64 でファイルをデコード。 文字列に入力ファイル名と出力ファイル名をタブで区切って指定します。 例:c:\data\input.txt [TAB] c:\data\input.jpg outstr [out] : 変換結果の文字列。 変換モードが6と7の場合、変換後のファイルの長さが文字列で返ります。 ファイルエラーの場合は、次の文字を返します。 "-1" : 入力ファイルエラー。 "-2" : 出力ファイルエラー。 使用例: outstr = bobj.Base64("user:pass") ' BASE64 エンコード outstr = bobj.Base64(para,1) ' BASE64 デコード ' BASE64 ファイルエンコード outlen = bobj.Base64("c:\in.jpg" & vbTab & "c:\out.txt",6)
- GetTempFile
テンポラリファイル名を返します。作成したファイルは、BASP21オブジェクトが終了するときに自動的に削除されます。16個まで作成できます。
tempfile = bobj.GetTempFile([dir]) dir [in] : ファイルを作成するディレクトリ名。 省略するとTMPまたはTEMP環境変数に設定されたディレクトリ。 tempfile [out] : 作成されたファイル名。作成に失敗すると空文字を返します。 使用例: temp1 = bobj.GetTempFile() temp2 = bobj.GetTempFile("c:\temp") 注意:GetTempFileメソッドで作成したファイルは、BASP21オブジェクトの終了時に 削除されますので、SendMailExメソッドの添付ファイルには指定できません。
- W3get
指定したURLのターゲットファイルをファイルに保存します。HTTPとFTPプロトコルをサポートします。
rc = bobj.W3get(para) para [in] : パラメータを次のように指定します。 -i input-file : パラメータをファイルから入力。複数のURLを処理できます。 -l log-file : ログファイル名 -d output-directory : 出力ディレクトリ -o output-file : 出力ファイル名 -j Japanese-character-code : 文字コード変換 sjis : SJIS euc : EUC jis : JIS ucs2 : UNICODE UCS-2 utf8 : UNICODE UTF-8 -t timeout : タイムアウト値。省略値 120 -p proxy : HTTP プロクシサーバ名 -A user:pass : HTTP "Authorization: Basic" ヘッダー -P user:pass : HTTP "Proxy-Authorization: Basic" ヘッダー -h level : HTTPヘッダーのみアクセス。 1: ログに保存 2: ファイルに保存 3: ファイルとログの両方 -u user-agent : HTTP User-Agent ヘッダー。省略すると Binetx/1.0 を使います。 -f "firewall-arg" : FTP ファイアーウォールパラメータ。 "fhost fuser/fpass SITE" "fhost fuser/fpass" "fhost" "fhost OPEN" -F user:pass : FTP ユーザとパスワード。 ":" で区切ります。 -a : FTP ASCII モード -s : FTP PASV モード -c : HTTP クッキー指定。名前=値 の形式で。 -x "xxx: yyy" : 任意のヘッダー。複数指定可能。20010911バージョン以上でサポート。 url : URL http:// または ftp://。かならずパラメータの最後に指定すること。 rc [out] : 終了コード。作成されたファイル数を返します。 使用例1:指定したディレクトリにファイルを保存 + クッキー指定 rc = bobj.W3get("-d c:\temp -c ""name=abcdefg"" http://www.yahoo.co.jp/index.html") 使用例2:テンポラリファイルに SJIS コードで保存 temp1 = bobj.GetTempFile() rc = bobj.W3get("-o " & temp1 & " -j sjis http://www.yahoo.co.jp/index.html") 使用例3:ftpでファイルを保存 rc = bobj.W3get("-d c:\temp -j sjis ftp://user:pass@who.com/dir/*.html") 使用例4:パラメータをファイルから入力 rc = bobj.W3get("-d c:\temp -i c:\url.txt") c:\url.txt の内容: -j sjis http://www.yahoo.co.jp/index.html -a -d e:\ftp -j sjis ftp://user:pass@who.com/dir/*.html http://www.yahoo.co.jp/index.html
- MidB
バイト配列をオフセットとバイト数で取出します。
outarray = bobj.MidB(inarray,offset[,len]) inarray [in] : バイト配列。 offset [in] : 取出し開始位置を数字で指定します。最初の位置は、0 です。 マイナスを指定すると右端からの相対で取出します。 len [in] : 取出すバイト数を指定します。省略値は、0 で最後まで取出します。 outarray [out] : 結果をバイト配列で返します。使用例: 使用例: outarray = bobj.MidB(b,128) ' 先頭から 128 バイトスキップした残り outarray = bobj.MidB(b,-128) ' 最後の 128 バイトデータ outarray = bobj.MidB(b,128,256) ' 先頭から 128 バイトスキップした256バイト
- MatchB
Perl5互換のパターンマッチ処理のバイト配列版。
offset = bobj.MatchB(regstr,barray) regstr [in] : 正規表現文字列。最初の文字は、"/" または、"m"。 barray [in] : 処理対象バイト配列。 offset [out] : マッチ結果をオフセット値で返します。 0 マッチしない場合。 1以上 マッチした相対位置 + 1。 -1 パターン指定エラー。 使用例: offset = bobj.MatchB("/\d{4}/",barray) ' 連続した4桁の数字の位置 offset = bobj.MatchB("/^gif89a/i",bobj.MidB(barray,0,6)) ' 先頭が gif89a
- SortMail
RcvMailメソッドで受信済みのメールをディレクトリ単位でソート、選択、削除できます。 他のメーラで読込んだメールはソートできません。 ソート結果は、ファイル名を配列で返します。ファイル名にはパス名は含まれません。
outArray = bobj.SortMail(dir,header[,option][,filter][,delete]) dir [in] : メールファイルのディレクトリ名。 header [in] : ソート対象のヘッダ名。ソートしない場合(選択や削除のみ)は、""。 * で総称名が使えます。 例: "From:" - 送信元でソート "Date:" - 送信日付でソート "Subject:" - 件名でソート "X-Mail*" - X-Mailer または X-Mail-Agent ヘッダでソート。 option [in] : ソートオプションを数字で指定。デフォルト値は、0。 0 - 順ソート 1 - 逆順ソート 2 - 大文字小文字無視 filter [in] : 選択オプション。デフォルトは、"" ですべて選択します。 ヘッダ名 + 条件 + 文字列で指定します。 ヘッダ名は、*: で総称指定できます。 文字列は、大文字小文字を無視します。 文字列を指定しないと、ヘッダが存在するしないで選択できます。 本文("Body:")や添付ファイル("File:")も指定可能。 条件: = 後続の文字列を含むものを選択 ! 後続の文字列を含まないものを選択 例: "From:=babaq" - 送信元にbabaq を含むメール "To:!hoge" - 宛先に hoge を含まないメール "Body:=babaq" - 本文に babaq を含むメール "References:=" - References ヘッダを含むメール "References:!" - References ヘッダを含まないメール "X-Mail*:=outlook" - Microsoft OutLook で送信したメール X-Mailer または X-Mail-Agent: ヘッダが該当します。 delete [in] : 削除オプション。選択オプションと共に使います。デフォルトは、0。 0 - 削除しません。 1 - 選択条件に一致したものを削除します。 outarray [out] : ソート(あるいは選択、削除)されたファイル名を配列で返します。 エラーや該当するメールファイルがないときは配列でなく 文字列が返ります。 使用例: outarray = bobj.SortMail(dir,"date:",1) ' 最新日付の順にソート ' 古い日付の順にソート。Fromヘッダに hoge が含まれているメールのみ outarray = bobj.SortMail(dir,"date:",0,"from:==hoge") ' Fromヘッダに hoge が含まれているメールのみ削除 outarray = bobj.SortMail(dir,"",0,"from:==hoge",1) ' 添付ファイルがあるメールのみ削除 outarray = bobj.SortMail(dir,"",0,"File:=",1) ' Beckyで送信されたメールのみ取出す outarray = bobj.SortMail(dir,"",0,"X-Mailer:=becky")
- Sleep
指定時間待機します。
bobj.Sleep sec sec [in] : 待ち時間を秒単位で指定します。 使用例: bobj.Sleep 10 ' 10秒待ちます
- MD5
メッセージダイジェストを返します。
md5 = bobj.MD5(str[,type]) str [in] : メッセージ文字列またはファイル名を指定します。 type [in] : 入力種別を数字で指定します。 0: 文字列。デフォルト。 1: ファイル。 md5 [out] : メッセージダイジェストを返します。32文字です。 使用例: md5 = bobj.MD5("優香") ' 25d5902468c74249d392f7c82aab159c md5 = bobj.MD5("c:\winnt\system32\basp21.dll",1)
- Execute2
外部プログラムを起動して標準出力を受取ります。JScriptでは こちらを使います。
stdout = bobj.Execute2(command,mode) command [in] : プログラム名とパラメータを指定します。 mode [in] : 次のモードを数字で指定します。 0 - プログラムを起動して終了を待たずに戻ります。 1 - プログラムを起動して終了するまで待ちます。 標準出力を文字列で受取ります。 2 - プログラムを起動して終了するまで待ちます。 標準出力をバイナリで受取ります。 3以上の値 - プログラムの終了を指定した時間(msec)だけ 待ちます。指定した時間内に終われば標準出力を受取ります。 奇数の場合は、標準出力を文字列で、偶数の場合は 標準出力をバイナリで受取ります。 タイムアウトを指定したいときはこちらを使います。 stdout [out] : 標準出力を受取ります。 処理結果は、bobj.Resultプロパティを参照します。 0 - 正常終了。 -1 - コマンドエラー。プログラム名がおかしい。 -2 - タイムアウト。 使用例: stdout = bobj.Execute2("net view",1) Win32プログラム以外を起動するときは、cmd.exeで実行します。 ' WIndows NT stdout = bobj.Execute2("cmd.exe /c c:\lha.exe l basp21.lzh",1) Windows 95/98 stdout = bobj.Execute2("command.com /c c:\lha.exe l basp21.lzh",1)
- CodePageプロパティ
UNICODEコード変換時のコード ページ (code page) を設定します。 英語版Windows NT の場合、明示的にコードページを設定しないと日本語が文字化け することがあります。設定したコードページは、BASP21 で日本語などの文字セットを 扱うメソッドすべてが影響を受けます。
ASP ページのコード ページを指定するには、CODEPAGE 疑似命令を使います。 たとえば、コード ページを日本語に設定するには、次の疑似命令を使います。 <%@ CODEPAGE= 932 %>
bobj.CodePage = codepage codepage [in] : コードページを数字で指定します。 使用例: save = bobj.CodePage ' デフォルトコードページ bobj.CodePage = 932 ' 日本語文字セット
★★★★★参考★★★★★ ブラウザからサーバへ、HTMLを使ってファイルを転送する方法は、 RFC1867(1995.11)で仕様が定義されています。 RFC1867をサポートしているブラウザは、次のとおりです。 ●Microsoft Internet Explorer 4.0以上 ●Microsoft Internet Explorer 3.02の場合 3.02 File Upload Add-Onのインストールが必要です。このアドオンは、 ここ からダウンロードできます。 ●Netscape Navigator 2.0x以上 BASP21によるファイルのアップロードはIIS 3.0、ASP 1.0 以上で動作します。 サンプル: ============== fileup.htm start ===================================== <HTML><BODY> <FORM ACTION="fileup.asp" ENCTYPE="multipart/form-data" METHOD=POST> 氏名: <INPUT TYPE=TEXT NAME="yourname"><BR> ファイル1: <INPUT TYPE=file NAME="file1"><BR> ファイル2: <INPUT TYPE=file NAME="file2"><BR> <INPUT TYPE=SUBMIT NAME=UPLOAD> </FORM></BODY></HTML> ============== fileup.htm end ======================================== ============== fileup.asp start ===================================== <% a=Request.TotalBytes b=Request.BinaryRead(a) set obj=server.createobject("basp21") name=obj.Form(b,"yourname") f1=obj.FormFileName(b,"file1") f2=obj.FormFileName(b,"file2") fsize1=obj.FormFileSize(b,"file1") fsize2=obj.FormFileSize(b,"file2") newf1=Mid(f1,InstrRev(f1,"\")+1) newf2=Mid(f2,InstrRev(f2,"\")+1) l1=obj.FormSaveAs(b,"file1","e:\temp\log\" & newf1) l2=obj.FormSaveAs(b,"file2","e:\temp\log\" & newf2) %> <HTML><HEAD><TITLE>File Upload Test</TITLE> <BODY> <H1>Testing</H1> <BR> <%= name %>さん、アップロードされました<BR> file1= <%= newf1 %><BR> file2= <%= newf2 %><BR> len1= <%= l1 %><BR> len2= <%= l2 %><BR> </BODY></HTML> ============== fileup.asp end ===================================== Internet Explorer 3.02で、fileup.htmページでBrowseボタンが表示されな ければ、3.02 File Upload Add-Onのインストールが必要です。
babaqフリーソフトのご使用上の注意
●プログラムを使って発生した損害に関しては、一切の責任を負いません。●使用、配布に制限はありません。自由にお使いください。
●動作の保証はありません。
●動作を確認したOSは、Windows NT 4.0 とWindows 95/98/ME/2000/XPのみです。