PowerShell には、メールを送信するための ” Send-MailMessage ” というコマンドレットがあります。
しかし、受信するためのコマンドレットは無いようです。
代わりに、PowerShell で Outlook を操作し、受信トレイの内容を確認するためのスクリプトを書いてみました。
(Windows 7 Enterprise RTM に、Office Professional Plus 2010 をインストールした環境で動作確認しました。)
|
|
2015年11月15日 と 2015年11月16日 に書いた記事では Excel を操作しましたが、今回も同様に「COM オブジェクト」を使います。
当然、Outlook がインストールされていない環境では使えません。
「Outlook があるなら、それを使えばいいじゃん。」というツッコミは無しでお願いします。
「メールの受信確認を自動化したい。」というニーズがどこかにあるかもしれません。
なお、以下3つのサイトを参考にしました。
//// <以下、24時間以内に受信したメールの「送信日時」、「送信者」、「件名」、「添付ファイル名」を表示するスクリプト> //////////
$OL = New-Object -COMObject Outlook.Application
$NS = $OL.GetNamespace(“MAPI”)
$FL = $NS.GetDefaultFolder(6)
Start-Sleep -s 20
$NW = Get-Date
$YD = $NW.AddDays(-1)
$ML = $FL.items | Where-Object {$_.ReceivedTime -gt $YD}
Foreach ($I in $ML)
{
Write-Output “- – – – – – – – – – – – – – – – – – – – – – – – – – – – – -”
$I.SentOn
$I.SenderName
$I.Subject
$I.Attachments | Select-Object FileName
Write-Output ”
”
}
//// <以上> ////////////////////////////////////////////////////
途中でわざと 20 秒間足止しているのは、Outlook 起動後にメールを受信するための猶予です。
24 時間以内に制限している受信日時(ReceivedTime)は、Outlook ではなくメールボックスに受信した日時のようです。
上記スクリプトをそのまま実行すると、アクセス許可を求めるポップアップが表示されますので、抑止方法を <後編> で記載します。
つづく