【问题标题】:VBScript: create folder in users mailbox using Outlook failsVBScript:使用 Outlook 在用户邮箱中创建文件夹失败
【发布时间】: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


【解决方案1】:

您的代码是否作为计划任务运行? Outlook(就像任何其他 Office 应用程序一样)不能在服务中使用。

【讨论】:

  • 可以,但只适用于只有一个邮箱的用户。
  • 您是否尝试过传递 EX 类型的地址而不是 SMTP?
  • 我放弃了,改用 powershell 脚本和 EWS,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 2020-08-28
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
相关资源
最近更新 更多