メールを会議案内

# Outlookアプリケーションを作成または既存のOutlookプロセスに接続
$Outlook = New-Object -ComObject Outlook.Application

# ブラウザ画面で選択しているメールを取得する時は1行目、
# ポップアウトメールを取得する時は2行目
# MailItem = $Outlook.ActiveExplorer().Selection[1]
$MailItem = $Outlook.ActiveInspector().CurrentItem

# メールアイテムが見つからない場合にメッセージを表示して終了
if ($MailItem -eq $null) {
    Write-Host "Mail item not found. Press Enter to exit."
    Read-Host
    exit
}

# 一時フォルダを作成
$tempFolder = New-Item -ItemType Directory -Path "$env:USERPROFILE\Desktop\temp" -Force

# 会議招集を作成
$Meeting = $Outlook.CreateItem(1)  # 1はolMeetingItemを表します

# 会議の本文フォーマットをテキスト形式に変更
$Meeting.BodyFormat = 1  # 1はolFormattextを表します

# 会議のタイトルを設定
$Meeting.Subject = $MailItem.Subject

# 会議本文にメールの内容をそのまま追加
$Meeting.Body = "`r`n-----Original Message-----`r`n" + $MailItem.Body

# メールアイテムの添付ファイルを一時フォルダに保存し、会議に添付
foreach ($Attachment in $MailItem.Attachments) {
    $attachmentPath = Join-Path $tempFolder.FullName $Attachment.FileName
    $Attachment.SaveAsFile($attachmentPath)
    $Meeting.Attachments.Add($attachmentPath)
}

# 必須参加者と任意参加者のメールアドレスを格納するための配列を初期化
$requiredAttendees = @()
$optionalAttendees = @()

# メールアイテムの受信者から必須参加者と任意参加者を分けて取得
foreach ($recipient in $MailItem.Recipients) {
    if ($recipient.Type -eq 1) {
        $requiredAttendees += $recipient.Address
    } elseif ($recipient.Type -eq 2) {
        $optionalAttendees += $recipient.Address
    }
}

# 必須参加者を会議に追加
foreach ($attendee in $requiredAttendees) {
    $Meeting.RequiredAttendees = $Meeting.RequiredAttendees + $attendee + ","

}

# 任意参加者を会議に追加
foreach ($attendee in $optionalAttendees) {
    $Meeting.OptionalAttendees = $Meeting.OptionalAttendees + $attendee + ","
}


# メールアイテムを閉じる
$MailItem.Close(1)

# 会議を表示
$Meeting.Display()

# 一時フォルダを削除
Remove-Item -Path $tempFolder.FullName -Recurse -Force

# スクリプトの実行が完了してもウィンドウを閉じない
# Read-Host "Press Enter to exit."


コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です