【问题标题】:PowerShell EWS SendAndSaveCopy() in specific folder特定文件夹中的 PowerShell EWS SendAndSaveCopy()
【发布时间】:2015-06-02 18:43:37
【问题描述】:

我正在尝试找出 EWS 的正确语法,以便能够存储在特定文件夹中发送的邮件,而不仅仅是在“已发送邮件”文件夹中。

邮箱结构:

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# 有效。

感谢您的帮助。

【问题讨论】:

  • 您需要找到您要保存到的文件夹的FolderID。您不能使用WellKnownFolderName,因为您尝试保存的文件夹不是枚举成员
  • 谢谢arco444,我想出了一个方法来检索你提到的FolderID。将它与 $Message.SendAndSaveCopy() 一起使用的正确语法是什么?

标签: powershell exchangewebservices


【解决方案1】:

首先,正如arco444 所指出的,我们需要检索FolderId 号码。之后,一个简单的SendSave 就可以解决问题。

对于任何感兴趣的人:

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)

【讨论】:

  • 这真的有效吗?我得到This operation can't be performed because this service object already has an ID. To update this service object, use the Update() method instead.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 2023-03-28
  • 2015-03-18
相关资源
最近更新 更多