【发布时间】:2014-09-09 23:58:47
【问题描述】:
我尝试使用 Outlook 在用户收件箱中创建一个文件夹:
' works fine:
Set oOutlookSession = CreateObject("Outlook.Application")
Set oNamespace = oOutlookSession.GetNamespace("MAPI")
Call oNamespace.Logon("", "", False, True)
Set oRecipient = oNamespace.CreateRecipient("John.doe@companyA.com")
Call oRecipient.Resolve()
' here: problem if user has multiple email adresses,
' working fine if user has only one email address:
Set oInbox = oNamespace.GetSharedDefaultFolder(oRecipient, 6)
' working fine if inbox was retrieved
Call oInbox.Folders.Add("myFolder")
如果用户只有一个 SMTP 地址 (John.doe@companyA.com),则整个脚本工作正常。如果他的 Exchange 配置文件中有另一个 SMTP 地址(例如 John.Doe@companyB.com),我会在此处收到错误消息。
我知道两个 SMTP 地址中的前缀(“@”之前的所有内容)完全相同。但即使我尝试使用其他 SMTP 地址,我也会收到相同的错误:
Hex(Err.Number) = &h8004010F ' i.e. MAPI_E_NOT_FOUND
我做错了什么?请帮忙,这真的很令人沮丧......
【问题讨论】:
-
我刚刚使用具有多个 SMTP 地址的收件人测试了您的代码。它可以毫无问题地工作。我怀疑“多个地址”的解释是一个红鲱鱼。这里有一个提示:使用 Outlook 和集成的 VBA-IDE 来调试您的代码。这比 VBScript 中基于 MsgBox 的调试方便得多。
-
不幸的是,我必须使用 vbscript 而不是 vbs。我使用用户的 displayName 进行了切换。如果我通过双击启动 VBS 脚本,这将非常有用。如果我使用调用该 vbs 脚本的任务,我会得到相同的错误(使用最高权限和相同的用户上下文)。
-
我知道你最终必须使用VBScript,我的建议是使用VBA IDE进行开发和调试。 VBScript 与 VBA 兼容,因此至少您可以使用半体面的工具来完成这项工作。 -- 如果您使用任务,可能由于脚本安全性而无法正确访问 MAPI 会话?在我的机器上至少有一个安全弹出窗口,当我运行这个脚本时我必须确认。
-
您可以在 Outlook 安全选项中停用它。
-
因此,如果您的任务对于某些收件人来说确实运行良好,而对于其他收件人却出现错误,那么我不知道。 ://
标签: email vbscript outlook exchange-server