オプション 1
環境についてはあまり説明しませんでしたが、環境が利用可能であると仮定すると、PowerShell スクリプトを使用できます。一例はこちら。これの本質は次のとおりです。
$smtp = New-Object Net.Mail.SmtpClient("ho-ex2010-caht1.exchangeserverpro.net")
$smtp.Send("reports@exchangeserverpro.net","administrator@exchangeserverpro.net","Test Email","This is a test")
次に、次の例に従って、コマンド ラインからスクリプトを起動できます。
powershell.exe -noexit c:\scripts\test.ps1
Windows 7 および Windows Server 2008R2 に既定でインストールされる PowerShell 2.0 には、より簡単なSend-MailMessage
コマンドが含まれていることに注意してください。
オプション 2
サードパーティ ソフトウェアを使用する準備ができている場合、オプションは、この SendEmail コマンド ライン ツールのようなものです。ただし、ターゲット環境によって異なります。バッチ ファイルを複数のマシンに展開する場合は、毎回含める必要があります (ただし、正式なインストールは必要ありません)。
オプション 3
Outlook を VBA スクリプトから直接実行することができます。これは、バッチ ファイルからトリガーします。これにより、Outlook 自体を使用して電子メールを送信できます。これは、必要なものに最も近いと思われます。これには 2 つの部分があります。まず、電子メールを送信するために必要な VBA スクリプトを理解します。このオンラインの例は、Microsoft のこちらを含めてたくさんあります。これの本質は次のとおりです。
Sub SendMessage(DisplayMsg As Boolean, Optional AttachmentPath)
Dim objOutlook As Outlook.Application
Dim objOutlookMsg As Outlook.MailItem
Dim objOutlookRecip As Outlook.Recipient
Dim objOutlookAttach As Outlook.Attachment
Set objOutlook = CreateObject("Outlook.Application")
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
Set objOutlookRecip = .Recipients.Add("Nancy Davolio")
objOutlookRecip.Type = olTo
' Set the Subject, Body, and Importance of the message.
.Subject = "This is an Automation test with Microsoft Outlook"
.Body = "This is the body of the message." &vbCrLf & vbCrLf
.Importance = olImportanceHigh 'High importance
If Not IsMissing(AttachmentPath) Then
Set objOutlookAttach = .Attachments.Add(AttachmentPath)
End If
For Each ObjOutlookRecip In .Recipients
objOutlookRecip.Resolve
Next
.Save
.Send
End With
Set objOutlook = Nothing
End Sub
次に、この回答/autorun
に従って、パラメーターを使用してコマンドラインから Outlook を起動します(必要に応じてパス/マクロ名を変更します)。
C:\Program Files\Microsoft Office\Office11\Outlook.exe" /autorun macroname
オプション 4
オプション 3 と同じアプローチを使用できますが、Outlook VBA を PowerShell スクリプト (コマンド ラインから実行する) に移動します。例はこちら。これはおそらく最も整頓されたソリューション、IMOです。