0

EWS/Powershell 経由でメールボックスをループして、受信トレイ内のメールのプロパティを読み取ろうとしています。これはほとんどのメールボックスで機能しますが、すべてではありません。ページングを使用して結果をループしています。

$moreItems=$true
$Offset=100
$pageSize=100
while($moreItems)
{
$itemView = new-object Microsoft.Exchange.WebServices.Data.ItemView($pageSize,$Offset,[Microsoft.Exchange.WebServices.Data.OffsetBasePoint]::Beginning)

...

$mails = $currentFolder.FindItems($itemView)


foreach($mail in $mails)
{
   #add-contnet -path "output.txt" -value $mail.subject
}

$itemView.Offset += $mails.Items.Count
if ($mails.MoreAvailable -eq $false)
{
      $MoreItems = $false
}
if ($MoreItems)
{
    $Offset += $pageSize
}
}

私が言ったように、これは一部のメールボックスでは完全に機能しますが、一部のメールボックスでは例外が発生します:

「プロパティに無効な値があります。」

このエラーは、次のコード行で発生します。

$mails = $currentFolder.FindItems($itemView)

ご覧のとおり、すべてのメールの件名を txt ファイルに書き込んでいます。ページサイズとオフセットに応じて、出力ファイルにリストされる件名 (メール項目) が増減します。たとえば、受信ボックスに 2000 個のアイテムがある場合、ページサイズを 1000 に設定すると出力ファイルに 1008 個のアイテムがリストされ、100 に設定すると 1907 個がリストされます。とにかく、私は常に例外を受け取ります(ただし、一部のメールボックスのみ)。

より深く掘り下げるためのアイデア/ヒントはありますか?

4

1 に答える 1

0

答えが見つかりました: ipm.note 以外のアイテムがメールボックスに存在すると、クラッシュすることが判明しました。たとえば、会議出席依頼です。ipm.note のみをフィルタリングするために searchfilter を実行し、それを finditems() メソッドに渡しました - これは機能しました ...

ヤン

于 2013-06-27T06:51:04.427 に答える