• ベストアンサー

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