簡體   English   中英

Powershell - Outlook - 向電子郵件添加多個附件

[英]Powershell - Outlook - add multiple attachments to email

我想在一封電子郵件中添加多個附件。 一個沒問題,但如果你想添加兩個或更多,就會出錯

我的代碼

$file_patch=Get-ChildItem 'C:\OUTLOOK' | Sort {$_.LastWriteTime} | select -last 1 | % { $_.FullName }
$name=Select-String -Path $file_patch -pattern name
$email=Select-String -Path $file_patch -pattern email
$subject=Select-String -Path $file_patch -pattern subject
$attachment=Select-String -Path $file_patch -pattern attachment
$Signature = Get-Content ($env:USERPROFILE + "\AppData\Roaming\Microsoft\Signatures\*.htm")
$rname = $name -replace ".*:"
$remail = $email -replace ".*:"
$rsubject = $subject -replace ".*:"
$rattachment = $attachment -replace ".*attachment:"
$sname = $rname -split ";"
$semail = $remail -split ";"
$ssubject = $rsubject -split ";"
$sattachment = $rattachment -split ";"
$body=Get-Content C:\OUTLOOK\BODY\$sname.txt
$Signature = Get-Content ($env:USERPROFILE + "\AppData\Roaming\Microsoft\Signatures\*.htm")
$sRecipientAddr = $semail
$sMsgSubject = $ssubject
$oOutlook = New-Object -ComObject Outlook.Application 
$oMapiNs = $oOutlook.GetNameSpace("MAPI")
$oMailMsg = $oOutlook.CreateItem(0)
$oMailMsg.GetInspector.Activate()
$sSignature = $oMailMsg.HTMLBody
[Void]$oMailMsg.Recipients.Add($sRecipientAddr)
$oMailMsg.Attachments.Add($sattachment)
$oMailMsg.Subject = $sMsgSubject
$oMailMsg.HTMLBody = $body + $sSignature

我的檔案

名稱:展望
電子郵件:e-mail@lest.pl;boss@company.com;random.dude@email.com
主題:你很棒
附件:"C:\\outlook\\attachment\\sell.txt";"C:\\outlook\\attachment\\out.txt"

錯誤 :

PS > Value does not fall within the expected range.
+ $oMailMsg.Attachments.Add($sattachment)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], A
+ FullyQualifiedErrorId : System.ArgumentException

什么可能是錯的

您正在嘗試將數組直接傳遞給.attachments.add() 這里頁面Add方法的用法。

因此,我認為如果您以稍微不同的方式添加附件,您應該會成功:

...
$sSignature = $oMailMsg.HTMLBody
[Void]$oMailMsg.Recipients.Add($sRecipientAddr)
$sattachment | ForEach-Object { $oMailMsg.Attachments.Add($_) }
$oMailMsg.Subject = $sMsgSubject
$oMailMsg.HTMLBody = $body + $sSignature

假設$sattachment = $rattachment -split ";" 確實返回一個字符串數組,您可以使用ForEach-Object cmdlet 遍歷它。 然后將為每個數組元素調用.Add()方法,它在塊中由$_表示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM