• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBSでメール送信)

VBSでメール送信

DOUGLAS_の回答

  • ベストアンサー
  • DOUGLAS_
  • ベストアンサー率74% (397/534)
回答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-discussions/194939-template-send-smtp-email-visual-basic-script-vbs-command-prompt-using-cdo.html には、live.com からでも メール が送れる スクリプト というような感じで書かれていますので、こちらをご参考になさってみてください。  ただし、ウィキペディア(http://ja.wikipedia.org/wiki/Hotmail)には、 > Hotmail(ホットメール)は、MSNが提供していた(過去形)Webメールサービスである。 と書かれており、Microsoft としても仕様の変更を頻繁に行なっているようですので、何とも申せませんねぇ。。。

masunona
質問者

お礼

すごく丁寧に教えていただき大変感謝しています! >oMsg.Configuration.Fields.Update >oMsg.Send >がダブっているからです。 確認ミスから単純な質問をしてしまい申し訳ありませんでした。 添付ファイルの選別については, 日付等の検証から新しいものを・・・は難しそうだったので,とりあえず 教えていただいたように, 別の新しいフォルダを作成し,そこにコピーしてから送信,という方法を採りました。 Hotmailでうまく動作しないのはMicrosoft側の問題もあるようなのですね。 社内で調整していきたいと思います。 教えていただいたように修正したところうまく動作して大変うれしいです! 本当にありがとうございました!!

関連する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

  • 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 お願いします。

  • 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です よろしくお願いします。

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

  • 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 --------------------------------------------------ここまで

  • 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)

  • 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

  • あるフォルダのファイル名を取得したい(vbs)

    VBスクリプトを使って、TESTフォルダにあるJPGファイル中で、一番新しいファイルのファイル名を取得したいと思っています。 JPGは、ファイル名が日付.jpgになっています。例)061123.jpg vbsは苦手で途中挫折してしましました。。ぜひ教えて頂けないでしょうか。 --------------- Dim Fs,strPath,Fl Set Fs = CreateObject("Scripting.FileSystemObject") strPath = "C:\Test\" Set Fl = Fs.GetFile(strPath) MsgBox Fl Set Fs = Nothing Set Fl = Nothing

  • 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は利用できない場合どのように修正したらよろしいでしょうか。 他に必要な情報がございましたらご指摘をお願いいたします。

  • 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 =============================ここまで=============================== 実際に会社の運用業務で使用しても問題ないものなのでしょうか? また、問題があるのでしたら、その解決法を教えて頂ければ嬉しいです。