【问题标题】:Create Outlook MailItem and save as draft for other user创建 Outlook MailItem 并另存为草稿以供其他用户使用
【发布时间】:2012-01-03 22:09:04
【问题描述】:

我正在尝试创建一个邮件项并将其保存在草稿文件夹中以供其他用户使用。我可以创建草稿,但它只保存到我自己的草稿文件夹,而不是其他用户。我对其他用户的邮箱有足够的权限。

这是我目前的测试代码:

        Dim omApp As New Outlook.Application

        Dim omNamespace As Outlook.NameSpace = omApp.GetNamespace("MAPI")

        Dim omUser As Outlook.Recipient = omNamespace.CreateRecipient("otheruser@mail.com")
        omUser.Resolve()
        If Not omUser.Resolved Then
            MsgBox("Could not login.")
        End If

        Dim omDrafts As Outlook.MAPIFolder = omNamespace.GetSharedDefaultFolder(omUser, Outlook.OlDefaultFolders.olFolderDrafts)
        Dim omMailItem As Outlook.MailItem = CType(omDrafts.Items.Add, Outlook.MailItem)

        With omMailItem
            .SentOnBehalfOfName = "otheruser@mail.com"
            .To = "bill@gates.com"
            .Subject = "Test"
            .Body = "Test email"
            .Save()
        End With

我做错了什么?

该代码必须适用于从 2003 年到 2010 年的所有 Outlook 版本。

【问题讨论】:

    标签: c# vb.net outlook outlook-2010


    【解决方案1】:

    好的,我自己解决了。在“保存”之后,我添加了一个“移动”以将其从我的草稿文件夹移动到用户的共享文件夹。所以代码将是:

    Dim omApp As New Outlook.Application
    
        Dim omNamespace As Outlook.NameSpace = omApp.GetNamespace("MAPI")
    
        Dim omUser As Outlook.Recipient = omNamespace.CreateRecipient("otheruser@mail.com")
        omUser.Resolve()
        If Not omUser.Resolved Then
            MsgBox("Could not login.")
        End If
    
        Dim omDrafts As Outlook.MAPIFolder = omNamespace.GetSharedDefaultFolder(omUser, Outlook.OlDefaultFolders.olFolderDrafts)
        Dim omMailItem As Outlook.MailItem = CType(omDrafts.Items.Add, Outlook.MailItem)
    
        With omMailItem
            .SentOnBehalfOfName = "otheruser@mail.com"
            .To = "bill@gates.com"
            .Subject = "Test"
            .Body = "Test email"
            .Save()
    
            .Move(omDrafts)
    
        End With
    

    【讨论】:

      【解决方案2】:

      GetDefaultFolder 始终默认为您的本地默认草稿文件夹。查看GetSharedDefaultFolder 方法。

      您必须将 Recipient 对象传递给此方法——您已经有 omUser 用于此方法。还必须传递文件夹类型,应该是Outlook.OlDefaultFolders.olFolderDrafts

      【讨论】:

      • 你是对的。我提交了错误的代码;我现在已经纠正了。不过,这并不能解决我的问题。
      • 恐怕我不熟悉 C#,但您能否更具体地了解正在发生的事情?您是否看到错误消息?另请注意,其他用户必须将对该文件夹的访问权限委托给您。
      • 没有错误。它只是忽略提供的文件夹并将 mailitem 保存在我自己帐户的草稿文件夹中(代码在该文件夹下运行)。顺便说一句:如果你应该知道其他语言的答案,那对我来说没问题。
      • 对不起,我不能在这里提供更多帮助。除了没有对该文件夹的委托访问权限外,我不明白为什么代码不起作用。或者我的文件夹常量错误。
      猜你喜欢
      • 2010-12-24
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      相关资源
      最近更新 更多