VBSが起動できない(メール送信)
- VBSが起動できず、メールの送信ができないエラーが発生しています。
- Windows XP Home EditionでVB2010で作成したファイルを実行しようとすると、文字が正しくないというエラーが出力されます。
- DIFFソフトでの検証でも同じものであることが確認できますが、エラーの解決方法が分かりません。
- ベストアンサー
VBSが起動できない(メール送信)
はじめまして、業務経験の少ない初心者PGです。 手入力で下記のようなスクリプトを作成し、実行するとメールが送信されるのですが Set oMsg = CreateObject("CDO.Message") oMsg.From = "aaa@ybb.ne.jp" oMsg.To = "bbb@ybb.ne.jp" oMsg.Subject = "Test" oMsg.TextBody = "テストメッセージです" & vbCrLf & Now oMsg.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oMsg.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "ybbsmtp.mail.yahoo.co.jp" oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 oMsg.Configuration.Fields.Update oMsg.Send VB2010でまったく同じファイルを作成し、スクリプトを実行しようとすると エラーが出力されてしまいます。 エラーの内容は、 スクリプト:C:\MAIL\mail.vbs 行:1 文字:1 エラー:文字が正しくありません。 コード:800A0408 ソース:Microsoft VBScript コンパイルエラー という事なのですが、DIFFソフトで検証してもまったく同じものらしく理解できません。 このような場合はどうやって解決すれば良いのでしょうか? 環境はWindows XP home editionです よろしくお願いします。
- Visual Basic
- 回答数4
- ありがとう数2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>DIFFソフトで検証してもまったく同じものらしく理解できません。 全く同じであれば、同じ結果になるので、違う結果と言うことは、どこか違うわけです。 コマンドプロンプトから、 fc /b ファイル名1 ファイル名2 で比較してみてください。違う箇所が表示されます。
その他の回答 (3)
- DOUGLAS_
- ベストアンサー率74% (397/534)
#質疑の内容が私の手の届かない方へ行っているようですので、 #もう、お呼びでないかも知れませんが。。。 >スペースを疑い調査したところ、入っていませんでした。 では、私に考えられることは、次の1点ぐらいです。 >下記の "ような" スクリプト とのことですが、実際には Set oMsg = CreateObject("CDO.Message") が1行目ではなくて、その前に コメント が入っているというようなことはないでしょうか? もともとの エラー 位置が「行:1、文字:1」ですから、 'hoge.vbs --------------------------------------------------- Set FSO = CreateObject("Scripting.FileSystemObject") With FSO.OpenTextFile("C:\MAIL\mail.vbs") WScript.Echo Asc(Left(.ReadAll, 1)) .Close End With '--------------------------------------------------------------- という スクリプト を実行して、「39」以外、例えば「-32411」が表示されるようでしたら、コメント の前の アポストロフィ が不正文字になります。 また、コメント も何もなく、いきなり Set oMsg = CreateObject("CDO.Message") から始まっているということでしたら、「83」以外が表示される場合は、「Set」の前に何か目に見えないものが入っていると考えられます。
お礼
何度も返信ありがとうございます。 なんというか自己解決してしまったようです。 原因はVBでの書き込み時にエンコードの指定をしていなかったのが原因かと・・。 いろいろとご指摘ありがとうございました。
補足
DOUGLAS_様 コメントは入っていないようです。
- notnot
- ベストアンサー率47% (4847/10260)
#2です。 >fc /b C:\MAIL.VBS C:\mail3.vbs の結果で、 >ファイル C:\MAIL.VBS と C:\mail3.vbs を比較しています と >FC: C:\MAIL.VBS は C:\mail3.vbs より長いファイルです との間に何も表示されなかったとしたら、mail.vbs は mail3.vbs の中身の後に何かが付加されただけなので、それまでは同一です。従って、一方のファイルでエラーが出ず、他方のファイルで1行目1文字目でエラーが発生すると言うことは無いです。 今までのどこかで勘違いか作業ミスがあると思われます。
補足
何度も返信ありがとうございます^^ 勘違いと言われましても・・何度実行してみても同じ結果になるので・・・。 実際のファイルのプロパティを見てみると、手作業で作成したファイルのサイズは572バイト。 VBで作成したファイルのサイズは585バイトになっています。 中身はコピペなのにです。 以前業務で0バイトファイルが必要な時に、手作業でファイルを作成すると完全な0バイトにはならず、コマンドプロンプトで作成する必要があったことがあり、VBで作成することによって何かファイル構成に違いができてしまったのかなと思っているところです。
- DOUGLAS_
- ベストアンサー率74% (397/534)
#VB2010 も DIFFソフト も存じませんが。。。 #単に「vbs」の問題かと存じますので、回答させていただきました。 #的外れな回答でしたら、お見捨てください。 Set oMsg = CreateObject("CDO.Message") の前に全角の スペース が入っていませんでしょうか?
補足
DOUGLAS_様 はじめまして、返信ありがとうございます。 問題のVBSは、自分の方も最初にスペースを疑い調査したところ、入っていませんでした。 手動で新しくVBSファイルを作成し、VBで作成したファイルの中身をコピペするとメールは送信されるので中身は間違っていないと思っています。
関連するQ&A
- VBスクリプト:メールを送信する
VBスクリプトでメールを送信しようとすると、メールサーバから許可されていないとエラーが出てしまいます。POP before SMTPに対応するようにするにはどういった方法がありますでしょうか?是非アドバイスお願い致します。 Set oMsg = CreateObject("CDO.Message") oMsg.From = "mailsender@example.jp" oMsg.To = "user@example.jp" oMsg.Subject = "Now on test" oMsg.TextBody = "テストメッセ" & vbCrLf & Now oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ "mail.example.jp" oMsg.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 oMsg.Configuration.Fields.Update oMsg.Send
- ベストアンサー
- Visual Basic
- VBScriptで、メールの送信をしたい。
VBScriptで、メールの送信をしたいのですが、『転送においてサーバーに接続できませんでした。』 というエラーが出てしまいます。 書いてあるスクリプトにどんな間違いがあるか見てもらえますか? Set objEmail = CreateObject("CDO.Message") objEmail.From = "****@gmail.com" objEmail.To = "****@gmail.com" objEmail.Subject = "メールタイトル" objEmail.Textbody = "メール本文" objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smarthost" objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objEmail.Configuration.Fields.Update objEmail.Send お願いします。
- 締切済み
- Visual Basic
- 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 です。 よろしくお願いいたします!
- ベストアンサー
- Visual Basic
- javascriptによるメール送信
javascriptによるメール送信フォームを作成しております。 以下のように作ったのですが、ローカルでは動作しますが、サーバーにアップすると、動作しなくなってしまいます。 ブラウザが原因かと思い、IE、chrom、safariなどのjavascriptON確認しましたが、ONでした。 お詳しい方がおられましたら、教えてくださいませんでしょうか。 PC環境は、 WinVistaです。 よろしくお願い致します。 <script type="text/javascript"> <!-- var oMsg = new ActiveXObject("CDO.Message"); var schemas = 'http://schemas.microsoft.com/cdo/configuration/'; oMsg.Configuration.Fields.Item(schemas+"sendusing") = 2; oMsg.Configuration.Fields.Item(schemas+"smtpserver") = "smtp.gmail.com"; oMsg.Configuration.Fields.Item(schemas+"smtpserverport") = 465; oMsg.Configuration.Fields.Item(schemas + 'smtpauthenticate') = true; oMsg.Configuration.Fields.Item(schemas + 'sendusername') = '***'; oMsg.Configuration.Fields.Item(schemas + 'sendpassword') = '***'; oMsg.Configuration.Fields.Item(schemas + 'smtpusessl') = true; oMsg.Configuration.Fields.Update(); oMsg.From = "***"; function sendMail(){ oMsg.To = mail_to.value; oMsg.Subject = mail_subject.value; oMsg.TextBody = mail_textbody.value; if (oMsg.Subject == "") { alert("件名・本文の入力は必須です。"); } //document.write("JavaScriptはONです!"); try { oMsg.Send(); } catch(e) { alert(e.message); } } // --> </script>
- ベストアンサー
- JavaScript
- WSHでメールを送信
こんにちは WSHでメールを送信したいのですが、エラーで実行できません。 XPだと実行できるのですが2003Serverで実行するとエラーがでます。 実行時に引数として添付ファイル名(フルパス)を指定します。 # mailsend.vbs c:\backup_log.log mailsend.vbs --------------------------------------------------ここから Set mail = CreateObject("CDO.Message") mail.From = "mail-add@hoge.com" mail.To = "mail-add@hoge.com" mail.Subject = "backup_log" mail.TextBody = "backup_log" & vbCrLf smtpserver = "smtp.hoge.com" attatch = WScript.Arguments(0) schemas = "http://schemas.microsoft.com/cdo/configuration/" mail.Configuration.Fields.Item(schemas&"sendusing") = 2 mail.Configuration.Fields.Item(schemas&"smtpserver") = smtpserver mail.Configuration.Fields.Item(schemas&"smtpserverport") = 25 mail.Configuration.Fields.Update mail.AddAttachment(attatch) mail.Send --------------------------------------------------ここまで
- 締切済み
- Windows系OS
- POP Before SMTPでメールを送信する方法
今回VB.NETを使い、メール送信ソフトを開発しています。 色々調べたのですが、POP Before SMTPだけどう記述してよいか分かりません。 詳しい方が居ましたら、よろしくお願いいたします。 以下認証なしのソース Dim mail As New System.Web.Mail.MailMessage mail.From = my@mydomain.com mail.To = you@youdomain.com mail.Subject = "テストメールの送信" mail.Body = "テストメールの本文" mail.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 System.Web.Mail.SmtpMail.SmtpServer = "mydomain.com" System.Web.Mail.SmtpMail.Send(mail) 以下SMTP AUTHのソース Dim mail As New System.Web.Mail.MailMessage mail.From = my@mydomain.com mail.To = you@youdomain.com mail.Subject = "テストメールの送信" mail.Body = "テストメールの本文" mail.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 mail.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtsperver") = "mydomain.com" mail.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 mail.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 mail.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "UserID" mail.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Password" System.Web.Mail.SmtpMail.SmtpServer = "mydomain.com" System.Web.Mail.SmtpMail.Send(mail)
- 締切済み
- Visual Basic
- VBSの作成 ディスク空き容量
Set fso = CreateObject("Scripting.FileSystemObject") Set src = fso.GetDrive("D:") 'WScript.Echo src.FreeSpace あるドライブの容量が20Gを下回ってしまったときに、メールを送信するようスクリプトを作成しました。 メールアドレスはバッチへ設定し、cscriptでスクリプトを実行します。下記のように作成したのですが、ドライブの空き容量は取得できてもメールが送信されません。 スクリプト初心者でさっぱりわかりません。どなたがご教授お願いします。またスクリプトを理解することができる参考書やサイトがあれば共にご教授願います。 'WScript.Echo strMailBody strMailBody = strMailBody & "空領域" & vbCrLf intFreeSpace = int(src.FreeSpace / 1024 / 1024 / 1024 * 10) / 10 'WScript.Echo intFreeSpace If src.FreeSpace < 20 Then strMailBody = strMailBody & intFreeSpace & vbCrLf End If Call SendMail("MailTo") Sub SendMail(strMailTo) Set objEmail = CreateObject("CDO.Message") objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "****.***.***.co.jp" objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objEmail.Configuration.Fields.Update objEmail.From = "***1@**.co.jp" objEmail.To = strMailTo strMailSubject = "[サーバ] Report" objEmail.Subject = strMailSubject objEmail.Textbody = strMailBody objEmail.Send Set objEmail = Nothing WScript.Echo "*** 送信完了 *** mail to: " & strMailTo End Sub
- 締切済み
- Visual Basic
- VBSの修正点を教えてください。
会社で自動でメールが送れるJOBを作成したいのですが、今のままでは正常に作動できないので。 修正点のご教授をお願いいたします。 下記がWebを参考して作成したバッチファイルです。 Mail.vbs: Set oMsg = CreateObject("CDO.Message") oMsg.From = "mailsender@gmail.com" oMsg.To = "user@gmail.com" oMsg.Subject = "Test" oMsg.TextBody = "テストメッセージです" & vbCrLf & Now oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxxxxxxxxx" oMsg.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 oMsg.Configuration.Fields.Update oMsg.Send Mail.bat: cscript Mail.vbs Webで探して上記の内容で作成しました。 今の状況として、 JOBを動かすサーバーA IP:10.111.222 Aではメールを送信する機能がありません。 ※IPは適当です メール送信ができるサーバーB IP:10.333.444 AサーバーでJOBを起動してBサーバーのメール機能を使ってメールを送りたいと考えています。 Aサーバーからtelnet を利用してBへの25番ポートの穴が開いているのは確認済みです。 Bサーバーのsmtpサーバー名はわかりません。確認しようとしたら、 「IPだけでできるはず」と言われたました。 上記のVBS だと7行目で"xxxxxxxxxx"の部分にBサーバーで使用しているsmtpサーバー名が必要だという認識のため、上記のVBSは使えなのでしょうか? IPだけわかる今の状況でメール送信できるようにする場合どのように修正したらよろしいですか。 また上記VBSは利用できない場合どのように修正したらよろしいでしょうか。 他に必要な情報がございましたらご指摘をお願いいたします。
- 締切済み
- Visual Basic
- CDO.Messageを使ったVBScript
VBScriptでメールを送信するためのサンプルがさまざまなサイトで紹介されており、 下記プログラムの10,11,12行目のURLが何をさしているのかが分かりません。 =============================ここから=============================== 1. Set objMail = CreateObject("CDO.Message") 2. objMail.From = "表示名 <username@xxx.yy.zz>" 3. objMail.To = "表示名1 <username1@xxx.yy.zz>;表示名2 <username2@xxx.yy.zz>" 4. objMail.Cc = "username@xxx.yy.zz" 5. objMail.Bcc = "username@xxx.yy.zz" 6. objMail.Subject = "メール送信テスト" 7. objMail.HtmlBody = "<html><body><i>CDO.Messageによるメール送信テスト</i></body></html>" 8. objMail.BodyPart.Charset = "utf-8" 9. objMail.AddAttachment "c:\test.txt" 10. objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 11. objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mailhost" 12. objMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 13. objMail.Configuration.Fields.Update 14. objMail.Fields("urn:schemas:mailheader:X-Mailer") = "vbscript mail" 15. objMail.Fields("urn:schemas:mailheader:Importance") = "High" 16. objMail.Fields("urn:schemas:mailheader:Priority") = 1 17. objMail.Fields("urn:schemas:mailheader:X-Priority") = 1 18. objMail.Fields("urn:schemas:mailheader:X-MsMail-Priority") = "High" 19. objMail.Fields.update 20. objMail.Send 21. Set objMail = Nothing =============================ここまで=============================== 実際に会社の運用業務で使用しても問題ないものなのでしょうか? また、問題があるのでしたら、その解決法を教えて頂ければ嬉しいです。
- ベストアンサー
- その他(プログラミング・開発)
- EXCEL VBA メール送信でファイル添付
現在、使用しているVBAを利用したメンバー向け案内メール配信で、ファイルを添付できないかと考えております。 G列に入力したアドレスのファイルを添付して送信できればと思うのですが、ご教授願えませんでしょうか。 現在のVBAは企業名、宛先共に変えられるように下記のような形となっております。 添付ファイルも宛先毎に異なります。 B列:送信先メールアドレス C列:メール件名 D列:送信先所属名 E列:送信先宛名 F列:メール本文 コマンドボタンで一括配信となっております。 【以下記述】 Sub Mail_Send() Dim iMsg As Object Dim iConf As Object Dim strbody As String Dim Flds As Variant Dim i, LastRow As Integer ' CDOオブジェクト初期設定 Set iMsg = CreateObject("CDO.Message") Set iConf = CreateObject("CDO.Configuration") iConf.Load -1 ' CDO Source Defaults Set Flds = iConf.Fields With Flds .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Worksheets("Sheet1").Range("C2").Value .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Worksheets("Sheet1").Range("C3").Value .Update End With ' 送信範囲設定 LastRow = Worksheets("Sheet1").Range("B7").End(xlDown).Row ' メール送信ループ For i = 8 To LastRow ' 送信状況メッセージクリア Worksheets("Sheet1").Range("F2").Value = "" ' メール本文作成 strbody = Worksheets("Sheet1").Range("D" & i).Value & vbCrLf & " " & _ Worksheets("Sheet1").Range("E" & i).Value & " 様" & vbCrLf & vbCrLf & _ Worksheets("Sheet1").Range("F" & i).Value ' 改行変換(送信環境によってはここの修正が必要かも) tmpstrbody = Replace(strbody, vbLf, vbCrLf) strbody = Replace(tmpstrbody, vbCr & vbCrLf, vbCrLf) ' メール送信 With iMsg Set .Configuration = iConf .From = Worksheets("Sheet1").Range("C4").Value .To = Worksheets("Sheet1").Range("B" & i).Value .BCC = Worksheets("Sheet1").Range("C5").Value .Subject = Worksheets("Sheet1").Range("C" & i).Value .TextBody = strbody .Send End With ' 送信状況メッセージ更新 Worksheets("Sheet1").Range("F2").Value = Worksheets("Sheet1").Range("B" & i).Value & " まで送信成功!" ' 3秒停止 Application.Wait [ NOW() + "0:00:03" ] Next i End Sub
- ベストアンサー
- オフィス系ソフト
補足
notnot様 はじめまして、コマンドプロンプトで検証できるなんて初めて知りました。 ご指摘通りに実行すると、 FC: C:\MAIL.VBS は C:\mail3.vbs より長いファイルです という内容が表示されました。 中身はコピペなのに違うなんて・・ ただ、違う事はわかりましたが何が違うのかまではわからないのですが・・。