特定文件夹中的PowerShell EWS SendAndSaveCopy() [英] PowerShell EWS SendAndSaveCopy() in specific folder

查看:145
本文介绍了特定文件夹中的PowerShell EWS SendAndSaveCopy()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm trying to figure out the correct syntax for EWS to be able to store a mail that is sent in a specific folder, not just in the 'Sent Items' folder.

邮箱结构:

Mailbox@mail.com
- Inbox
- ----- PowerShell
- ----- ---------- Mail OUT

我如何让EWS将已发送的邮件保存在Inbox\PowerShell\Mail OUT中?

How can I have EWS save the sent mail in Inbox\PowerShell\Mail OUT ?

我尝试了以下操作但未成功:

I've tried the following without success:

$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#有效.

The examples on MSDN are only valid for C#.

谢谢您的帮助.

推荐答案

首先,正如arco444所指出的,我们需要检索FolderId号.之后,像个SendSave就能解决问题.

First, as arco444 pointed out, we need to retrieve the FolderId number. After that a simle Send and Save will do the trick.

对于任何有兴趣的人:

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)

这篇关于特定文件夹中的PowerShell EWS SendAndSaveCopy()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆