【问题标题】:Accessing Inbox and SentItems folder on EWS using powershell使用 powershell 访问 EWS 上的 Inbox 和 SentItems 文件夹
【发布时间】:2017-06-06 14:49:16
【问题描述】:

我正在通过 PowerShell 代码处理一些 EWS。我似乎无法同时访问已发送邮件和收件箱文件夹。

这是我的代码:

$ewsPath = "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"
Add-Type -Path $ewsPath
$ews = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService -ArgumentList "Exchange2013"
$ews.Credentials = New-Object Net.NetworkCredential('emailbox', 'password')
$ews.AutodiscoverUrl("emailbox@domain.com")
$inbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($ews,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::Inbox)
$sentbox = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($ews,[Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::SentItems)
$iv = New-object Microsoft.Exchange.WebServices.Data.ItemView -ArgumentList 10000                                         
$pvSet = New-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)                                               
$sentItems = $sentbox.FindItems($iv)

当我想在 sentbox 变量中获取已发送邮件文件夹时,我收到以下错误:

使用“2”参数调用“绑定”时出现异常:“请求 失败的。远程服务器返回错误:(501)未实现。

但是如果我在 $inbox 和 $sentbox 初始化之间有以下行,它可以工作,但是 $sentbox 上的 findItems 失败。

$ews.AutodiscoverUrl("emailbox@domain.com")

【问题讨论】:

  • 您能否发布您使用的整个代码,例如您收到的错误是针对 FindItems 的,而您在执行 Bind (GetItem) 时发布的代码与此无关,因此您必须在其中运行其他代码发生错误
  • 抱歉,copypasta 有问题,因为我还在调试。所以问题是我的 $sentbox 上的绑定失败了。但是,如果我在第二次绑定之前重做 discoverurl(),$sentitems 绑定有效,但 findItems 仍然失败。
  • 自动发现所做的只是填充 server.url 值,一旦发现就不应更改。您可能想要启用跟踪并查看发送到服务器的请求,例如 $service.TraceEnabled = $true 。我也会给 ewseditor ewseditor.codeplex.com 一个机会,只需单击收件箱,然后发送的项目将与您的代码尝试使用相同的底层 dll 等执行完全相同的操作。

标签: powershell exchangewebservices


【解决方案1】:

这是关于防火墙的问题。 代码有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多