前提・実現したいこと
Powershellで、メールの添付ファイルのダウンロード処理を考えています。
先人の例がありました。
PowerShell Outlookで添付ファイルを保存する
http://www.oborodukiyo.info/PowerShell/v30/PS-AttachmentInOutlook
ところがメールにつきものの
メール件名の「RE:」の「:」が処理できません。
メール件名の「:」の処理を、
ファイルダウンロード時に、
その文言だけ取り除くか、エスケープ文字等でコメントアウトして回避したいです。
実行時のコマンドは次の通りです。
./SaveAttachmentsOnOutlook.ps1 "メール件名の一部" "Outlookフォルダ名" "5" "C:\Logs\OutlookAddFiles"
発生している問題・エラーメッセージ
Powershellでメール件名の「RE:」の「:」が処理できません。
受信メールのため、「:」を省いたメール件名を使用することはできません。
エラーメッセージ "1" 個の引数を指定して "SaveAsFile" を呼び出し中に例外が発生しました: "値が有効な範囲にありません。" 発生場所 C:\Users\Keiji\Desktop\SaveAttachmentsOnOutlook.ps1:234 文字:40 + $att.SaveAsFile <<<< ($destination + $oItem.Subject + "_" + $att.FileName) + CategoryInfo : NotSpecified: (:) []、MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation 2018/08/21 16:34:33 RE: 【提出】XXXXXXXX_XX_XX
該当のソースコード
234行目は次の記述です。
$att.SaveAsFile($destination + $oItem.Subject + "_" + $att.FileName)
212~241行目は次の記述です。
# 検索するフォルダ名を指定した場合 elseIf($f.Name -match $folder) { # フォルダー名を表示 "フォルダ: " + $f.Name # メールを取得する foreach($oItem in $f.Items) { if($startDay -eq $null -or $oItem.SentOn -ge $startDay) { If($subject -eq $false) { foreach($att in $oItem.Attachments) { $att.SaveAsFile($destination + $oItem.Subject + "_" + $att.FileName) $oItem.SentOn.ToString() + " " + $oItem.Subject } } elseif($regS.IsMatch($oItem.Subject)) { foreach($att in $oItem.Attachments) { $att.SaveAsFile($destination + $oItem.Subject + "_" + $att.FileName) $oItem.SentOn.ToString() + " " + $oItem.Subject } } } } "`n`n" }
ここに言語名を入力
Windows7 Pro64bitのPowershellです。
Powershell
PS C:\Users\XXXXX\Desktop> $PSVersionTable
Name Value
CLRVersion 2.0.50727.8793
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
### 試したこと 「:」抜きの添付ファイルつきメール件名を試し、正常終了しています。 ### 補足情報(FW/ツールのバージョンなど) 正常にダウンロード取得できた場合の添付ファイル名の例は次の通りです。 元:XXXについて.txt ↓ DL後:(メール件名)01_XXXについて.txt

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/21 22:53