PowerShellを使えば、Microsoft Outlookを自動操作してメールを送信することができます。定型文の自動配信や、システム通知などに活用することで、日々の業務効率を大幅に向上させることが可能です。
本記事では、PowerShellからOutlookを起動してメールを送信する基本的なスクリプトと、実用的なカスタマイズ方法について解説します。
Outlook経由でメールを送信する基本構文
まずはPowerShellからOutlookを操作して、1通のメールを送信する基本的なサンプルを紹介します。
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "recipient@example.com"
$Mail.CC = "cc@example.com"
$Mail.Subject = "PowerShellからの自動送信"
$Mail.Body = "このメールはPowerShellスクリプトから送信されました。"
$Mail.Send()
このスクリプトを実行すると、Outlookがバックグラウンドで起動し、指定された宛先にメールが自動で送信されます。Outlookが事前に起動していなくても自動的に起動されます。
HTMLメールを送信する
テキスト形式ではなく、HTMLメールを送信したい場合は.HTMLBody
プロパティを使用します。
$Mail.HTMLBody = "<h1>PowerShellからのお知らせ</h1><p>HTML形式で送信しています。</p>"
この記述により、見出しや段落タグを含むリッチなメールを作成することができます。
ファイルを添付して送信する
ファイルを添付したい場合はAttachments.Add()
メソッドを使用します。
$Mail.Attachments.Add("C:\Users\user\Documents\report.pdf")
複数ファイルも同様に追加できます。
Outlookのセキュリティ警告について
スクリプトによってOutlookからメールを送信する際、セキュリティ設定によっては警告ダイアログが表示されることがあります。この動作はOutlookのバージョンやポリシー設定に依存します。
業務での自動送信を想定する場合は、Outlookのセキュリティ設定を確認し、必要に応じて管理者による制御が必要です。
送信前に確認したい場合(表示のみ)
実行後すぐに送信するのではなく、ユーザーの確認を経て送信したい場合は.Display()
メソッドを使います。
$Mail.Display()
この方法でOutlookの新規メールウィンドウが開き、内容を確認・修正したうえで手動で送信することができます。
まとめ
PowerShellを活用することで、Outlookを通じたメール送信を自動化でき、日常業務やシステム通知を効率的に処理することが可能になります。定期実行タスクと組み合わせることで、より高度な運用も可能です。
セキュリティ設定やOutlookのバージョンによって動作が異なる場合があるため、本番利用前には検証環境でのテストをおすすめします。