特定文件夹中的 PowerShell EWS SendAndSaveCopy()
PowerShell EWS SendAndSaveCopy() in specific folder
我正在尝试找出 EWS 的正确语法,以便能够存储在特定文件夹中发送的邮件,而不仅仅是在 'Sent Items' 文件夹中。
邮箱结构:
Mailbox@mail.com
- Inbox
- ----- PowerShell
- ----- ---------- Mail OUT
如何让 EWS 将发送的邮件保存在 Inbox\PowerShell\Mail OUT
中?
我尝试了以下但没有成功:
$Message.SendAndSaveCopy('WellKnownFolderName.Inbox.PowerShell.Mail OUT')
$Message.SendAndSaveCopy('WellKnownFolderName.Inbox\PowerShell\Mail OUT')
$Message.Send()
$Message.Save([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::'Inbox\PowerShell\Mail OUT')
MSDN 上的示例仅对 C# 有效。
感谢您的帮助。
首先,正如 arco444 指出的那样,我们需要检索 FolderId
号码。之后,简单的 Send
和 Save
就可以了。
任何感兴趣的人:
Function Find-FolderID {
Param (
[Parameter(Mandatory)]
[String]$Path,
[Parameter(Mandatory)]
[String]$Mailbox,
[Parameter(Mandatory)]
[Object]$Service
)
$FolderId = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$Mailbox)
$TargetFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($Service,$FolderId)
$Array = $Path.Split('\')
for ($i=1; $i -lt $Array.Length; $i++) {
$FolderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(1)
$SearchFilter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,$Array[$i])
$Results = $service.FindFolders($TargetFolder.Id,$SearchFilter,$FolderView)
if ($Results.TotalCount -gt 0) {
foreach($R in $Results.Folders) {
$TargetFolder = $R
}
}
else {
throw "Folder '$Path' not found in mailbox '$Mailbox'"
}
}
$TargetFolder.Id
}
Find-FolderId -Path '\Inbox\PowerShell\Expiring users OUT' -Mailbox 'Mailbox@mail.com' -Service $EWS
$Message.Send()
$Message.Save($FolderID)
我正在尝试找出 EWS 的正确语法,以便能够存储在特定文件夹中发送的邮件,而不仅仅是在 'Sent Items' 文件夹中。
邮箱结构:
Mailbox@mail.com
- Inbox
- ----- PowerShell
- ----- ---------- Mail OUT
如何让 EWS 将发送的邮件保存在 Inbox\PowerShell\Mail OUT
中?
我尝试了以下但没有成功:
$Message.SendAndSaveCopy('WellKnownFolderName.Inbox.PowerShell.Mail OUT')
$Message.SendAndSaveCopy('WellKnownFolderName.Inbox\PowerShell\Mail OUT')
$Message.Send()
$Message.Save([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::'Inbox\PowerShell\Mail OUT')
MSDN 上的示例仅对 C# 有效。
感谢您的帮助。
首先,正如 arco444 指出的那样,我们需要检索 FolderId
号码。之后,简单的 Send
和 Save
就可以了。
任何感兴趣的人:
Function Find-FolderID {
Param (
[Parameter(Mandatory)]
[String]$Path,
[Parameter(Mandatory)]
[String]$Mailbox,
[Parameter(Mandatory)]
[Object]$Service
)
$FolderId = New-Object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$Mailbox)
$TargetFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($Service,$FolderId)
$Array = $Path.Split('\')
for ($i=1; $i -lt $Array.Length; $i++) {
$FolderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(1)
$SearchFilter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName,$Array[$i])
$Results = $service.FindFolders($TargetFolder.Id,$SearchFilter,$FolderView)
if ($Results.TotalCount -gt 0) {
foreach($R in $Results.Folders) {
$TargetFolder = $R
}
}
else {
throw "Folder '$Path' not found in mailbox '$Mailbox'"
}
}
$TargetFolder.Id
}
Find-FolderId -Path '\Inbox\PowerShell\Expiring users OUT' -Mailbox 'Mailbox@mail.com' -Service $EWS
$Message.Send()
$Message.Save($FolderID)