Как создать профиль по умолчанию и запустить клиент Outlook (GUI) с помощью Microsoft.Office.Interop.Outlook - PullRequest
0 голосов
/ 26 апреля 2018

Я пытался запустить Outlook с профилем по умолчанию или создать профиль по умолчанию с помощью файла сборки Microsoft.Office.Interop.Outlook . но я получаю следующую ошибку при запуске моего приложения Outlook. Сообщение об ошибке: Свойство «http: //schemas.microsoft.com/mapi/proptag/0x7C070102» неизвестно или не может быть найдено . И я новичок в этой сборке. Также предложите любые другие рамки для достижения моей цели

 Outlook.Application OutlookClient()
    {
        Outlook.Application oOutlook = null;
        Outlook.NameSpace oNS = null;
        oOutlook = new Outlook.Application();
        oNS = oOutlook.GetNamespace("MAPI");
        oNS.Logon("My profile", "myprofilepassword", false, false);
        oOutlook = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
        return oOutlook;
    }

1 Ответ

0 голосов
/ 26 апреля 2018

Во-первых, нет необходимости дважды инициализировать объект экземпляра приложения в коде:

oOutlook = new Outlook.Application();

и

oOutlook = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;

Во-вторых, нет необходимости использовать метод Logon.

Вот что MSDN заявляет для этого:

Используйте метод входа в систему только для входа в определенный профиль, когда Outlook еще не запущен. Это связано с тем, что одновременно может выполняться только один процесс Outlook, и этот процесс Outlook использует только один профиль и поддерживает только один сеанс MAPI. Когда пользователи запускают Outlook второй раз, этот экземпляр Outlook запускается в том же процессе Outlook, не создает новый процесс и использует тот же профиль.

Если Outlook уже запущен, использование этого метода не создает новый сеанс Outlook и не меняет текущий профиль на другой.

Если Outlook не запущен и вы хотите запустить Outlook только с профилем по умолчанию, не используйте метод входа в систему. Лучшая альтернатива показана в следующем примере кода, InitializeMAPI: сначала создайте экземпляр объекта приложения Outlook, затем укажите ссылку на папку по умолчанию, такую ​​как «Входящие». Это побочный эффект инициализации MAPI для использования профиля по умолчанию и для полной функциональности объектной модели.

Sub InitializeMAPI ()

  ' Start Outlook.
  Dim olApp As Outlook.Application
  Set olApp = CreateObject("Outlook.Application")

  ' Get a session object. 
  Dim olNs As Outlook.NameSpace
  Set olNs = olApp.GetNamespace("MAPI")

  ' Create an instance of the Inbox folder. 
  ' If Outlook is not already running, this has the side
  ' effect of initializing MAPI.
  Dim mailFolder As Outlook.Folder
  Set mailFolder = olNs.GetDefaultFolder(olFolderInbox)

  ' Continue to use the object model to automate Outlook.
End Sub

Начиная с Outlook 2010, если у вас есть несколько профилей, вы настроили Outlook на использование всегда профиля по умолчанию, и вы используете метод Logon для входа в профиль по умолчанию без запроса пользователя, пользователь получит Подскажите, все равно выбрать профиль. Чтобы избежать такого поведения, не используйте метод Logon; используйте вместо этого обходной путь, предложенный в предыдущем примере InitializeMAPI.

Итак, ваш код должен выглядеть следующим образом:

Outlook.Application OutlookClient()
{
    Outlook.Application oOutlook = null;
    Outlook.NameSpace oNS = null;
    oOutlook = new Outlook.Application();

    // optional
    oNS = oOutlook.GetNamespace("MAPI");
    Outlook.MAPIFolder folderInbox = oNS.GetDefaultFolder(olFolderInbox)

    return oOutlook;
}

См. Приложение C # для автоматизации Outlook (CSAutomateOutlook) пример кода.

...