VBS初心者です。
以下のサイトを参考に,特定のフォルダにファイルが追加されたら,
指定のメールアドレスに添付して送信するVBSを作成してみました。
http://plaza.rakuten.co.jp/mscrtf/diary/20120626 …
ちなみに記述を少しだけ変えて,
送信したファイルを削除しないようにしています。
しかしこうしてしまうと,「送信フォルダ」にファイルが追加されると,
その新しく追加されたファイルではなく,
前から置いてある別のファイルが送信されてしまいます。
「最新のファイルを添付して送信」することはできないでしょうか?
またファイルを添付してメールを送信することはできるのですが,
なぜか送信受信ともに,まったくおなじメールが2通作成されてしまいます。
(2通同時ではなく1通目が届いて30秒後くらいにもう1通届きます)。
あと,受信側メールアドレスをbbb@hotmail.co.jpにし,
smtpserver:smtp.live.com
smtpserverport:587
とすると
「転送においてサーバーに接続できませんでした」と出てしまいます。
ポート番号を,465や25にしてみましたがだめでした。
どこを直せばいいでしょうか?
以上の解決策をご教授ください!
コードは以下です。
Dim Fs, strPath, Fl, F, NewFile, NewFileFP, OutF
Set Fs = CreateObject("Scripting.FileSystemObject")
strPath = "C:\FileSend\送信フォルダ\"
NewFile = ""
Set Fl = Fs.GetFolder(strPath)
For Each F In Fl.Files
If F.Name > NewFile Then
NewFile = F.Name
End If
Next
NewFileFP = Fl & "\" & NewFile
Dim WshShell, BtnCode
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")
Set oMsg = CreateObject("CDO.Message")
oMsg.From = "ファイル送信元 <aaa@gmail.com>" '送信元
oMsg.To = "bbb@hotmail.co.jp" '送信先
oMsg.Subject = "ファイルの送信test3" '件名
oMsg.TextBody = "ファイルをお送りします。" 'メール本文
oMsg.AddAttachment NewFileFP '添付
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = 2
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = "smtp.googlemail.com"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = 465
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = True
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = 1
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = "aaa@gmail.com"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = "******"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = 60
oMsg.Configuration.Fields.Update
oMsg.Send
oMsg.Configuration.Fields.Update
oMsg.Send
Set OutF = Fs.OpenTextFile("C:\FileSend\test.txt",8)
OutF.WriteLine "Date[" & date & "] Time[" & time & "] File[" & NewFile & "]"
OutF.Close
objShell.Popup "メール送信しました。", 0, "送信完了", 0
Set Fs = Nothing
Set Fl = Nothing
Set OutF = Nothing
使用しているパソコンは
Win7Professional 32bit
です。
よろしくお願いいたします!
No.1ベストアンサー
- 回答日時:
簡単なところから回答いたします。
> なぜか送信受信ともに,まったくおなじメールが2通作成されてしまいます。
これは、
oMsg.Configuration.Fields.Update
oMsg.Send
がダブっているからです。
参考にされた サイト にも2回は書いてありません。
コーディング をされる際に、誤ってコピペでもされたのでしょうが、メール送信スクリプト などを書かれるときには、細心の注意が必要です。
●CDO.Messageによるメール送信
http://serialty.blog117.fc2.com/blog-entry-10.html
のように、[With ステートメント] を使ったり、長い文字列を
strConfigurationField ="http://schemas.microsoft.com/cdo/configuration/"
というように、定数に代入したりして、コード の可読性を高める工夫をされることをお薦めします。
--------------------------------------------------
>「最新のファイルを添付して送信」することはできないでしょうか?
お示しの コード で添付ファイルを決定しているのは、
For Each F In Fl.Files
If F.Name > NewFile Then
NewFile = F.Name
End If
Next
の部分ですが、これは、strPath フォルダ 内の ファイルを、名前順に巡回(For ~ Next ループ)して、最後の ファイル を NewFile に代入しています。
従いまして、NewFile に代入されるのは、「前から置いてある別のファイル」ではなくて、名前の昇順に並べた場合の最後の ファイル ということになります。
「最新のファイル」を特定するためには、strPath フォルダ 内の ファイル の更新日時や作成日時を検証して、最も新しいものを NewFile に代入するということになりますが、手っ取り早いのは、
oMsg.Send
した後で、添付ファイル を別の フォルダ(例えば「送信フォルダ」の下に「送信済み」フォルダ でも作っておいて、そこ)に移動するのが良いかと存じます。
--------------------------------------------------
> どこを直せばいいでしょうか?
私は hotmail 環境がありませんので、試しようがありませんが、WEB でいろいろと検索してみますと、
・CreateObject("CDO.Message") は万能ではない。
・スパム防止策で Microsoft ができないようにしている。
というような意見が見受けられます。
一方、
●[Template] Send SMTP email with Visual Basic Script (vbs) from Command Prompt using CDO([テンプレート] CDOを使用して、コマンドプロンプトからVisual Basicスクリプト(VBS)でSMTP電子メールを送信)
http://www.unix.com/windows-dos-issues-discussio …
には、live.com からでも メール が送れる スクリプト というような感じで書かれていますので、こちらをご参考になさってみてください。
ただし、ウィキペディア(http://ja.wikipedia.org/wiki/Hotmail)には、
> Hotmail(ホットメール)は、MSNが提供していた(過去形)Webメールサービスである。
と書かれており、Microsoft としても仕様の変更を頻繁に行なっているようですので、何とも申せませんねぇ。。。
すごく丁寧に教えていただき大変感謝しています!
>oMsg.Configuration.Fields.Update
>oMsg.Send
>がダブっているからです。
確認ミスから単純な質問をしてしまい申し訳ありませんでした。
添付ファイルの選別については,
日付等の検証から新しいものを・・・は難しそうだったので,とりあえず
教えていただいたように,
別の新しいフォルダを作成し,そこにコピーしてから送信,という方法を採りました。
Hotmailでうまく動作しないのはMicrosoft側の問題もあるようなのですね。
社内で調整していきたいと思います。
教えていただいたように修正したところうまく動作して大変うれしいです!
本当にありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
同名フォルダを作成し、そのフ...
-
拡張子をつくる
-
参照元Excelファイルをバックグ...
-
グローバル変数について
-
MkDir パス名が無効です
-
OpenFileDialogを使った後にも...
-
サブフォルダに格納されている...
-
Excelで外部のファイルの場所を...
-
ExcelVBAでリンク先の対象のフ...
-
Webページのリンクの貼り方を教...
-
iTunes Storeから購入した曲で...
-
ユーザーフォーム内のテキスト...
-
linux duコマンドで困っています。
-
表示を標準か改ページプレビュ...
-
Teratermマクロの戻り値の取得失敗
-
Powershell 2.0 にPSJob系のコ...
-
VBSで指定した時刻にメッセージ...
-
OUTLOOKで受信メールを開くとテ...
-
リストボックス2に表示されたフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
拡張子をつくる
-
サブフォルダに格納されている...
-
Excelで外部のファイルの場所を...
-
同名フォルダを作成し、そのフ...
-
MkDir パス名が無効です
-
<a href="file:///フォルダ名/...
-
OpenFileDialogを使った後にも...
-
ファイルの作成日時について
-
ExcelVBAでリンク先の対象のフ...
-
参照元Excelファイルをバックグ...
-
EXCEL VBAのDir関数について
-
スマホでHTMLファイルを開いて...
-
Mac Excel VBAについて
-
秀丸のタグジャンプがうまくで...
-
VBSでメール送信
-
ファイルとフォルダのセキュリ...
-
メモリマップドファイルは動作...
-
Outlookで添付ファイルの貼り付...
-
Excelファイルの特定のシートを...
おすすめ情報