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()
        End With

我究竟做错了什么?

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

4

2 回答 2

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
于 2011-11-23T14:53:17.813 回答
0

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

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

于 2011-11-22T14:42:27.300 回答