web-dev-qa-db-ja.com

Outlookを実行せずに電子メールを送信するVBScript

毎晩実行される自動テストを作成しました。テストが終了したら、毎晩結果をメールで送信したいと思います。

これを行うために、バッチファイルの最後に次の行を追加しようとしました。

Set MyApp = CreateObject("Outlook.Application")
Set MyItem = MyApp.CreateItem(0)
With MyItem
    .To = "[email protected]"
    .Subject = "Subject"
    .ReadReceiptRequested = False
    .HTMLBody = "resport"
End With
MyItem.Send

ただし、これは、テストがバックグラウンドで実行され、UIにアクセスできないため、Outlookが開いていないために電子メールが送信されない原因となっています。

とにかく、実際にマシンでOutlookを実行せずにこのメールを送信する方法はありますか。

ありがとう!

15
user856354

CDO.Messageオブジェクトを使用して、VBScriptでOutlookなしで電子メールを送信できます。これを使用するには、SMTPサーバーのアドレスを知る必要があります。

Set MyEmail=CreateObject("CDO.Message")

MyEmail.Subject="Subject"
MyEmail.From="[email protected]"
MyEmail.To="[email protected]"
MyEmail.TextBody="Testing one two three."

MyEmail.Configuration.Fields.Item ("http://schemas.Microsoft.com/cdo/configuration/sendusing")=2

'SMTP Server
MyEmail.Configuration.Fields.Item ("http://schemas.Microsoft.com/cdo/configuration/smtpserver")="smtp.server.com"

'SMTP Port
MyEmail.Configuration.Fields.Item ("http://schemas.Microsoft.com/cdo/configuration/smtpserverport")=25 

MyEmail.Configuration.Fields.Update
MyEmail.Send

set MyEmail=nothing

SMTPサーバーでユーザー名とパスワードが必要な場合は、これらの行をMyEmail.Configuration.Fields.Update行:

'SMTP Auth (For Windows Auth set this to 2)
MyEmail.Configuration.Fields.Item ("http://schemas.Microsoft.com/cdo/configuration/smtpauthenticate")=1
'Username
MyEmail.Configuration.Fields.Item ("http://schemas.Microsoft.com/cdo/configuration/sendusername")="username" 
'Password
MyEmail.Configuration.Fields.Item ("http://schemas.Microsoft.com/cdo/configuration/sendpassword")="password"

CDOを使用してVBScriptで電子メールを送信する方法の詳細については、以下のリンクを参照してください。 http://www.paulsadowski.com/wsh/cdo.htm

28
michaelx386

はい。 Blatまたはその他の自己完結型SMTPメーラー。 Blatは、コマンドラインから実行されるかなりフル機能のSMTPクライアントです

Blat is here

0
MJB