• ベストアンサー

VBScriptでtxtファイルの中身を送信するには?

VBScriptのコマンド(関数?)に "Sendmail"というものがありますが これでファイルを扱う場合、”添付ファイル”として送信する機能になるようです。 添付ファイルとしてではなく、テキストファイルの中身をそのまま本文として送信するようなことはできるでしょうか。 イメージとしては、UNIX系OSで % mail atesaki@hoge.ne.jp < Okuru.txt といった感じです。 お知恵をお貸しください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • isobeman
  • ベストアンサー率41% (17/41)
回答No.3

エラーの原因は、このあたりだと思われます。 ・basp21はインストールされていますか? ・元となるテキストファイルは用意されていますか? テキストファイル名は、前回のサンプルでは、"c:\body.txt" と "c:\attach.txt" の2つです。 ・aspか .vbsファイルのどちらで試しましたか? (ライン番号を書かれても、そのラインにどのステートメントがあるかわからないので正確には判断できませんが。。。) strSMPT から strAttachment は、文字列型の変数で、以下の内容をあなたの環境に合わせて、設定する必要があります。 strSMTP : メール送信に使用するSMTPサーバーです。あなたが利用可能なサーバーを指定する必要があります。 strSenderAddr : あなたのメールアドレスです。 strDestAddr : 宛先のメールアドレスです。 strTitle : メールのタイトルです。 strBody : メールの本文です。 strAttachment : 添付ファイルのパスを指定します。 テキストファイルを本文に挿入したいとのことでしたので、 basp.BinaryRead("c:\body.txt") を使用して、"c:\body.txt"というテキストファイル全体を読み込み、 basp.Kconv()を使用して、文字コードをUnicodeに変換して、strBodyに代入しています。

ijumi1978
質問者

お礼

6行目とはisobemanさんが前回の回答(No.2)で書いてくださっていた  strBody = basp.Kconv( basp.BinaryRead("c:\body.txt"), 4 ) ' ファイル読込・ShiftJIS->Unicode変換 のところでした。 が、ファイル名の指定が間違っていたためか 書き直したらちゃんと実行することができました。 BASPについてはどなたかがインストールしていたようです。 #共用マシンなんです。 添付ファイル送らない方法も、適当にやったら実行できたので そのソースを上げておきます。 #isobemanさんはご存知かもしれませんが、ほかに知りたい方がいらっしゃったときの参考のために。。。 何度も教えてくださって、本当にありがとうございました。 -----<以下ソースプログラム TextFileSoushin.vbs>----- 'hasshinmoto@hoge.ne.jp → okurisaki@hoge.ne.jp 'にhonbun.txtに書かれた内容が送信されます。 Set basp = CreateObject("basp21") strTitle = "This is a subject" strSMTP = "smtp.hoge.ne.jp" strSenderAddr = "okurisaki@hoge.ne.jp" strDestAddr = "hasshinmoto@hoge.ne.jp" strBody = basp.Kconv(basp.BinaryRead("C:\honbun.txt"), 4 ) '添付ファイルなし ret = basp.SendMail(strSMTP, strSenderAddr, strDestAddr, strTitle, strBody, "") '添付ファイル 'strAttachment = "C:\TenpFile.txt" '添付ファイルあり 'ret = basp.SendMail(strSMTP, strSenderAddr, strDestAddr, strTitle, strBody, strAttachment) If ret <> "" Then MsgBox(ret) End IF -----<ソースプログラムここまで>-----

その他の回答 (2)

  • isobeman
  • ベストアンサー率41% (17/41)
回答No.2

ごめんなさい。主旨が少しずれていました。 テキストファイルを本文にして送信とのことですので、以下のようになります。 Set basp = CreateObject("basp21") strSMTP = "smtp.test.com" strSenderAddr = "sender@test.jp" strDestAddr = "destination@test.jp" strTitle = "件名です" strBody = basp.Kconv( basp.BinaryRead("c:\body.txt"), 4 ) ' ファイル読込・ShiftJIS->Unicode変換 strAttachment = "c:\attach.txt" ret = basp.SendMail(strSMTP, strSenderAddr, strDestAddr, strTitle, strBody, strAttachment ) 動作確認しました。

ijumi1978
質問者

補足

さっそくの回答ありがとうございます。 教えていただいたスクリプトをほぼそのまま実行してみたのですが、できませんでした。 Line: 6 Char: 1 Error: Unspecified error Code: 80004005 Source: (null) なるエラーが出ます。 それと、 strBodyとstrAttachmentはそれぞれ、どんな役割なのでしょうか。 たびたび申し訳ありません。 よろしくお願いいたします。

  • isobeman
  • ベストアンサー率41% (17/41)
回答No.1

basp21という追加コンポーネントを使用してみてはいかがでしょうか。 これは、よく使われるが標準では実装されていない機能やよりユーザビリティを向上させた機能を、汎用コンポーネントとして実装しているものです。 詳細は、 http://www.hi-ho.ne.jp/babaq/basp21.html を参照のこと。 これを使用すると、 [basp21-object].SendMail([SMTPサーバー名], [送信先], [送信元], [件名], [本文], [添付ファイル]) と書くことができます。 上記Webサイトからインストーラをダウンロードしてインストールすると、以下のような記述ができるようになります。 basp21 = Server.CreateObject("basp21") strSMTP = "smtp.test.com" strSenderAddr = "sender@test.jp" strDestAddr = "destination@test.jp" strTitle = "Hello every body!" strBody = "Here is a body of the message!" strAttachment = "c:\attach.txt" ret = basp21.SendMail(strSMTP, strSenderAddr, strDestAddr, strTitle, strBody, strAttachment ) (なお、操作確認はしておりませんので、あしからず)

参考URL:
http://www.hi-ho.ne.jp/babaq/basp21.html

関連するQ&A

  • Thuderbirdで送信時に添付ファイル(txtファイル)が添付できません。

    EdmaxからThuderbirdに乗り換えたのですが、 送信時に添付ファイル(txtファイル)を添付すると、 ファイルとして添付されず、 本文の下に記されてしまいます。 送信時に何かを設定しなければいけないのでしょうか? 仕事でtxtファイルを添付して送信することが多く、 困っています。 どなたかご有識のかたよろしくお願いいたします。

  • ファイルの中身に対する再帰的検索

    初心者です。 テキストファイルの中身を調べて、その中に特定の拡張子を持ったファイル名があれば更にその中身を調べていって、階層構造になったファイルを全て調べあげるスクリプトを作ろうとしています。 例えばfile1.txtの中身が ... hoge file2.txt file3.txt hogehoge ... だったとすれば、今度はfile2.txtおよびfile3.txtの中身に.txtという拡張子を持ったファイル名があるかどうか調べ、該当するものが無くなるまで調べていきます。 これらのテキストファイルは全て同じディレクトリ内に存在します。 どういう具合のループにすればよいのか想像がつきません。 アドバイスお願いします。

    • ベストアンサー
    • Perl
  • sendmailの質問(メール本文と添付ファイル)

    UNIXのCシェルと、sendmailコマンドで、メール送信を考えています。 メール本文あり、添付ファイル、どちらも利用してメールをしたいのですが、実現方法が分かりません。インターネットサイトで調べたところ、sendmail.cfの設定方法くらいしか見つけられませんでした。 具体的な解決方法や、その情報が載っているサイトを教えて頂けないでしょうか?

  • txtファイルを連結して一つのファイルにする方法

    毎々お世話になっております。さうなまんです。 複数あるtxtファイルの中身を一つに連結して 一個のテキストファイルにするための DOSコマンドを探しております。 よく探したつもりですが、、、困っております。 毎回、フォルダ内のtxtを開いては印刷というのが 面倒でバッチファイルをつくりたいのです。 環境はWinXP proです。 お手数おかけしますが、なにとぞよろしくお願い いたします。

  • sendmailでメール送信

    OS:Redhat9 sendmail 上記環境にてメール送信を行いたいのですが、 送信されません。 mailコマンドにて、 mail hoge@***.com と入力して、 件名、本文、CCは記述の方法はわかるのですが、 一応送信されているようなのですが、相手(自分の他のメール)に届きません。 sendmailのコマンドにて、メールを送信する場合は ただmailコマンドにあて先メールアドレスを、記述 すればよいのでしょうか、 たとえば、次の中継先のメールサーバーは記述するのでしょうか。

  • Access2003からシンプルにファイルを添付してメール送信したいと

    Access2003からシンプルにファイルを添付してメール送信したいと考えています。 こちら(http://www.site-cooler.com/kwl/asp/19.htm)を参考に、BASP21というコンポーネントを利用してACCESS上のフォームにボタンを用意してコードビルダで下記のように記述してみましたが、「コンパイルエラー:構文エラー」と表示されました。 どのように改善すれば良いのでしょうか。 ACCESS初心者の為、すみませんがご教示お願いします。 --------------------------------------------------------------------------- Private Sub コマンド0_Click() Set bobj = Server.CreateObject("basp21") bobj.SendMail() <%@ LANGUAGE = VBSCRIPT %> <% Dim strServer 'SMTPサーバ Dim strTo '宛先 Dim strFrom '送信元 Dim strSub 'メール標題 Dim strBody 'メール本文 Dim strFile '添付ファイル Dim result '戻り値 strServer = "smtp.xxxx.co.jp" strTo = "xxxx@xxxx.co.jp" strFrom = "xxxx@xxxx.co.jp" strSub = "件名" strBody = "本文です。" & vbCrLf & "本文終了" strFile = "c:\text.txt" Set bobj = Server.CreateObject("basp21") result = bobj.SendMail(strServer, strTo, strFrom, strSub, strBody, strFile) If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If Response.Write ("メール送信完了") %> If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If End Sub ---------------------------------------------------------------------------

  • foo1.txt、foo2.txt、foo3.txt…とファイル名をつけたいとき

    プログラムの一部でファイルを作成しておりまして、 foo1.txt、foo2.txt、foo3.txt…のように foo+変数.txtとなっており、変数を変える(増やす)ことで複数のファイルを作っていきたいのですが、 このように作成したいファイル名の途中に変数を含んでいる場合、どのようにすればよいのかをご教授願います。 現在、ファイルを作成する関数(関数の中身はおそらく関係してこないと思うので割愛させていただきます)を作成し、 make("foo.txt")のように記述しておりますが詰まってしましました。 どうぞ宜しくお願いします。

  • テキストファイルの中身について

    あるフォルダしたのテキストファイルとそのファルダしたのフォルダ中のテキストファイルについて、 例えば、”日本”と言う文字が有ったら、そのテキストファイル名を表示するようなの機能を実現したいです。 何を使ったら、いいですか? サンプルが欲しいです。 教えてください!お願いします。 ーーーーーーーーーーーーー temp-------a.txt |------b.txt |------temp1 |--------a1.txt |--------b1.txt       … などなど、 テキストファイルの中身に、”日本”という文字が存在したら、そのテキストファイル名を出力 ーーーーーーーーーーーーー

  • VBscriptでコマンドラインへ発行したい

    VBscriptでコマンドプロンプトを起動させテキストを発行させることで悩んでおります。 コマンドラインのツールを実行させそこへテキストに記述された内容を実行させたいと思っています。 Dim strCOM For i = 1 to 15 strCOM = "cmd /C C:\○○○○\△△△△.exe 'ここがわかりません 'テキストファイルを流したいのですが・・・・ 'コマンド名を仮に@@@@とします。 "@@@@ D:\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt" 'をコマンドライン上に流したいのですが・・・ Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec(strCOM) FileCopy "D:\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt", "D:\終了\HEPPOKO" & Right("000" & CStr(i), 4) & ".txt" 'ここにSleep関数?で5分後とカウントアップにしたいのですが調べてみてもちょっと検討がつかなかったので・・・ '教えていただけないでしょうか? Next

  • DOSでファイルの内容を置換

    一つのテキストファイルの中身を置換する方法は 解るのですが一つ一つやるのが不便なので、 テキストファイルの内容を一括で 置換できるコマンドを探しています。 ファイル名 A.txt 内容    名前A.名前B.本文 ファイル名 B.txt 内容    名前A.名前B.本文 具体的には上記のように複数のファイルがあるのですが この複数のファイルの名前Aという部分を一括で変更できるコマンド又はやり方を教えてください。