プロが教えるわが家の防犯対策術!

VBScriptのコマンド(関数?)に "Sendmail"というものがありますが
これでファイルを扱う場合、”添付ファイル”として送信する機能になるようです。

添付ファイルとしてではなく、テキストファイルの中身をそのまま本文として送信するようなことはできるでしょうか。

イメージとしては、UNIX系OSで
% mail atesaki@hoge.ne.jp < Okuru.txt
といった感じです。

お知恵をお貸しください。
よろしくお願い致します。

A 回答 (3件)

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
    • good
    • 0

ごめんなさい。

主旨が少しずれていました。
テキストファイルを本文にして送信とのことですので、以下のようになります。

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 )

動作確認しました。

この回答への補足

さっそくの回答ありがとうございます。

教えていただいたスクリプトをほぼそのまま実行してみたのですが、できませんでした。
Line: 6
Char: 1
Error: Unspecified error

Code: 80004005
Source: (null)
なるエラーが出ます。

それと、 strBodyとstrAttachmentはそれぞれ、どんな役割なのでしょうか。

たびたび申し訳ありません。
よろしくお願いいたします。

補足日時:2002/06/18 14:45
    • good
    • 0

エラーの原因は、このあたりだと思われます。


・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に代入しています。
    • good
    • 0
この回答へのお礼

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
-----<ソースプログラムここまで>-----

お礼日時:2002/06/19 15:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A