Outlook Interop文件夹“消失”

时间:2013-08-12 17:28:03

标签: powershell outlook office-interop

在Office365中,我设置了一个名为“Corp Calendar”的日历的共享邮箱,该日历可供需要访问企业日历的任何用户共享。我拥有邮箱的完全权限,因此它在我的Outlook旁边打开。

我创建了一个PowerShell脚本,用于检查日历中是否有新的或更改的条目,然后向我发送一封包含详细信息的电子邮件。有时,它会失败,因为它找不到指定的文件夹。

这三行执行得很好:

Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $Outlook.GetNameSpace("MAPI")

这是间歇性失败的行:

$current = $namespace.Folders.Item('Corporate Calendar').Folders.Item('Calendar').Folders.Item('Corp Calendar').Items

您可以看到它正在挖掘的结构:企业日历邮箱>日历>公司日历

以下是PowerShell返回的错误:

Exception calling "Item" with "1" argument(s): "The attempted operation failed. An object could not be found." At C:\Users\aaldrich\desktop\Scripts\Calendar.ps1:72 char:1 
+ $current = $namespace.Folders.Item('Corporate Calendar').Folders.Item('Calendar' ... 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ 
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation 

当它执行此操作时,我挖到了命名空间,它似乎能够看到除公司日历邮箱之外的每个邮箱。重新启动Outlook可以解决此问题。下次发生这种情况时,我会进去再检查一下。

我在检查新项目($namespace.SendAndReceive(1))之前还实现了发送/接收,但添加该项并未改变错误的频率。

,当日历由其他人编辑时,错误似乎最常发生

现在,脚本只向我发送电子邮件,并且还会向我发送一封包含任何错误的电子邮件。但最终,我希望它能够自动向每个人发送电子邮件。

不重要的一面注意:有些人可能会想知道“为什么不将公共文件夹与文件夹助手一起使用?”完整转发不适用于我们的Exchange组织(MS已经查看了几个月......)。以无法通过手机查看的方式转发作为附件转发。标准转发对日历事件无用。

谢谢!

修改 我让它再次失败。不幸的是,我能够再次运行失败的线路,它运行得很好。这不是之前发生的事情。如果在我检查项目时发送/接收是否会出现这些问题?我已经给它15秒完成发送/接收......我会增加这个长度。

1 个答案:

答案 0 :(得分:0)

您的代码假定邮箱“Corporate Calendar”已作为委托商店添加到用户的个人资料中。首先,邮箱名称可能不同(例如'CorpCaledar@mycompany.com'),其次可能根本不存在。

为什么不使用Namespace.GetSharedDefaultFolder打开该邮箱的默认日历文件夹?