[英]PowerShell EWS API | How to download attachments?
在下面的代码中,我能够检索到 email 的主题,但无法下载附件。 我什至不能 output 附件的名称。 附件是一个 WAV 声音文件。
Import-Module "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"
$folderid = new-object Microsoft.Exchange.WebServices.Data.FolderId($v_FolderID)
$fiItems = $null
$iv = new-object Microsoft.Exchange.WebServices.Data.ItemView(1000)
$fiItems = $service.FindItems($folderid, $args[1], $iv)
foreach ($Item in $fiItems.Items[0])
{
$v_Subject = $Item.Subject
foreach($attachment in $Item.Attachments)
{
$attachment.Load()
$attachmentname = $attachment.Name.ToString()
$attachmentname
$file = New-Object System.IO.FileStream("C:\", [System.IO.FileMode]::Create)
$file.Write($attachment.Content, 0, $attachment.Content.Length)
$file.Close()
}
}
$iv.offset += $fiItems.Items.Count
Out-File -FilePath "C:\EWSSubject.txt" -InputObject $v_Subject```
您应该首先需要创建一个PropertySet
object,因为不会自动加载附件信息。
## Target Path Folder
$TargetPath = "c:\temp\attachments"
## Create a PropertySet with the Attachments metadata
$ItemPropetySet = [Microsoft.Exchange.WebServices.Data.PropertySet]::new(
[Microsoft.Exchange.Webservices.Data.BasePropertySet]::IdOnly,
[Microsoft.Exchange.WebServices.Data.ItemSchema]::Attachments,
[Microsoft.Exchange.WebServices.Data.ItemSchema]::HasAttachments
)
然后:
## Iterate the items and find messages with attachments
foreach ($item in $fiItems.Items)
{
## Load the Message attachment metadata using the PropertySet Created
$message = [Microsoft.Exchange.WebServices.Data.EmailMessage]::Bind(
$service, $item.Id, $ItemPropetySet)
if ($message.HasAttachments)
{
foreach ($attachment in $message.Attachments)
{
if ($attachment -is [Microsoft.Exchange.WebServices.Data.FileAttachment])
{
$FilePath = Join-Path $TargetPath $attachment.Name
$attachment.Load($FilePath)
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.