PowerShell でメールチェック。 <前編>

PowerShell には、メールを送信するための ” Send-MailMessage ” というコマンドレットがあります。

しかし、受信するためのコマンドレットは無いようです。

代わりに、PowerShell で Outlook を操作し、受信トレイの内容を確認するためのスクリプトを書いてみました。

(Windows 7 Enterprise RTM に、Office Professional Plus 2010 をインストールした環境で動作確認しました。)

 





   




   

 

2015年11月15日2015年11月16日 に書いた記事では Excel を操作しましたが、今回も同様に「COM オブジェクト」を使います。

当然、Outlook がインストールされていない環境では使えません。

「Outlook があるなら、それを使えばいいじゃん。」というツッコミは無しでお願いします。

「メールの受信確認を自動化したい。」というニーズがどこかにあるかもしれません。

なお、以下3つのサイトを参考にしました。

Outlookサポートナビ!

Outlook 研究所

ITLAB51.COM

 

 

//// <以下、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 ではなくメールボックスに受信した日時のようです。

上記スクリプトをそのまま実行すると、アクセス許可を求めるポップアップが表示されますので、抑止方法を <後編> で記載します。

 

 

つづく