PowerShellでOutlookのメールを作成し表示する

YouTube

基本形

定型的なメールを作成し、表示するためのPowerShellスクリプト。
実際に使用する際には、ToやCCやSubjectやBodyの値を変更してください。

CreateMail.ps1

# Please change parameters
$To = "<To>"
$CC = "<CC>"
$Subject = "<Subject>"
$Body = "<Body>"
 
function CreateMailByOutlook {
    $Outlook = New-Object -ComObject Outlook.Application
    $Mail = $Outlook.CreateItem(0)
    $Mail.To = $To
    $Mail.CC = $CC
    $Mail.Subject = $Subject
    $Mail.Body = $Body
    $inspector = $Mail.GetInspector
    $inspector.Display() # Outlook上で目視確認してから送信するために、Send()ではなくDisplay()を使用します
}
 
function Main {
    CreateMailByOutlook
}
 
Main

ExecuteCreateMail.bat

以下のバッチファイルを一緒に置くと、バッチファイルをダブルクリックして実行できるので便利です。

pushd %~dp0
powershell -NoProfile -ExecutionPolicy RemoteSigned .\CreateMail.ps1
popd

Sample : 次の日年休を取得したい場合

CreateMailForHoliday.ps1

次の日に年休を取得する内容のメールを作成し、表示します。
ただし、金曜日と土曜日の場合には、翌日ではなく次の月曜に休む内容へ変更します。

# Create holiday data
$now = Get-Date
switch ($now.DayOfWeek.value__) {
    # Friday
    5 {$date = $now.AddDays(3)}
    # Saturday
    6 {$date = $now.AddDays(2)}
    Default {$date = $now.AddDays(1)}
}
$dateString = "{0:yyyy/MM/dd}" -f $date
$dayOfWeekString = $date.ToString("ddd")
 
 
# Create E-mail
$outlook = New-Object -ComObject Outlook.Application
$mail = $outlook.CreateItem(0)
 
$mail.To = "Example mailing list <example@example.com>"
 
$mail.CC = ""
 
$mail.Subject = "【不在連絡】〇〇 年休 $dateString ($dayOfWeekString)"
 
$mail.Body ="〇〇です
 
自己都合の為、年休を取得します。
 
よろしくお願いいたします。
"
 
$inspector = $mail.GetInspector
$inspector.Display()

リンク

PowerShellをダブルクリックで実行する方法


スポンサーリンク