VBSでメール送信
VBS初心者です。
以下のサイトを参考に,特定のフォルダにファイルが追加されたら,
指定のメールアドレスに添付して送信するVBSを作成してみました。
http://plaza.rakuten.co.jp/mscrtf/diary/201206260000/
ちなみに記述を少しだけ変えて,
送信したファイルを削除しないようにしています。
しかしこうしてしまうと,「送信フォルダ」にファイルが追加されると,
その新しく追加されたファイルではなく,
前から置いてある別のファイルが送信されてしまいます。
「最新のファイルを添付して送信」することはできないでしょうか?
またファイルを添付してメールを送信することはできるのですが,
なぜか送信受信ともに,まったくおなじメールが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/sendusing") = 2
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.googlemail.com"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "aaa@gmail.com"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "******"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 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
です。
よろしくお願いいたします!
お礼
解決しました。 VBScriptと本文テキストの両方を"UTF-16(BOM付き)"で 文字化けせずに送信できました。原因はOpenTextFileの オプションをUTF-16にしてなかったことでした。 勉強になりました。ありがとうございました。
補足
ご回答ありがとうございます。 .BodyPart.Charset は "UTF-16" や "UTF-32" が選択できないので "UTF-8"のままでテストしました。 VBScriptファイルと本文テキストの両方を "UTF-16LE(BOM付き)" "UTF-16BE(BOM付き)" で保存して試してみました。 エラーはなくなりましたが、すべての全角文字(第3・4水準漢字でなくても)が文字化けしてしまいました。 ((BOM無し)で保存しようとすると、その時点で文字化けします。) 【環境】 テキストエディタはEmEditorを使用 Windows7Pro、受信はOutlook2010使用 Outlookから送信すれば文字化けはありません 引き続きよろしくお願いします。