Создать Outlook MailItem и сохранить как черновик для другого пользователя - PullRequest
1 голос
/ 22 ноября 2011

Я пытаюсь создать почтовый элемент и сохранить его в папке «Черновики» для другого пользователя.Я могу создать черновик, но он сохраняется только в мою черновую папку, но не для другого пользователя.У меня достаточно прав на почтовый ящик другого пользователя.

Это мой тестовый код:

        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

Что я делаю не так?

Код имеетработать на всех версиях Outlook с 2003 по 2010 год.

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

Хорошо, я решил это сам. После «Сохранить» я добавляю «Переместить», чтобы переместить его из папки «Черновики» в общую папку пользователя. Так что код будет:

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
0 голосов
/ 22 ноября 2011

GetDefaultFolder по умолчанию всегда используется в локальной папке «Черновики». Проверьте метод GetSharedDefaultFolder .

Вы должны передать объект Recipient этому методу - у вас уже есть omUser для этого. Вы также должны передать тип папки, который должен быть Outlook.OlDefaultFolders.olFolderDrafts

...