C # Прикрепите, чтобы открыть электронную почту Outlook, редактировать и отправлять - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь заставить C # присоединиться к открытому ответному электронному письму (инициированному пользователем вручную) на уже работающем экземпляре Outlook (открытом вручную пользователем). Код должен идентифицировать открытое ответное письмо, отредактировать строку темы и текст письма и отправить электронное письмо.

Проблема в том, что я дошел до определения работающего экземпляра Outlook и присвоения его объекту с помощью одного из методов Marshal outApp = Marshal.GetActiveObject("Outlook.Application") as Application, но затем я не могу привести его к типу MailItem, чтобыманипулировать его элементами, например, строкой темы, телом и т. д., например, MailItem mailItem = (MailItem)outApp.CreateItem((OlItemType.olMailItem)); создает недопустимое исключение приведения во время выполнения

Извиняюсь, если я ошибаюсь, но не смог найти ни одного примера, близкого к этой точной последовательности событий, одним из более близких является этот пост c # outlook, открыть существующий экземпляр и ответить на электронную почту но тогда все идет совсем по-другому. Существует множество сообщений о том, как использовать Microsoft.Office.Interop.Outlook для ОТКРЫТИЯ, а затем использовать экземпляр Outlook, но вряд ли что-нибудь (что я мог найти) о том, как использовать открытый экземпляр. Любая помощь приветствуется, спасибо.

РЕДАКТИРОВАТЬ 08102019:
Код используется с платформы RPA, поэтому нет риска его обнаружения в качестве вредоносного ПО. «Пользователь» - это всего лишь виртуальный пользователь в учетной записи с целевыми разрешениями и контролируемой средой ... извините, ничего темного здесь нет :-). В любом случае, вот код, который я использую на данный момент, который создает новый экземпляр и сохраняет его в черновиках в Outlook. Это не то, что я намеревался сделать, как я объяснил выше, это просто временное исправление:

        OutlookApp outlookApp = new OutlookApp();
        MailItem mailItem = (MailItem)outlookApp.CreateItem(OlItemType.olMailItem);
        mailItem.To = "test@test.com";
        mailItem.Subject = "Test Email Generation";
        mailItem.HTMLBody = "<html><body>This is the body of the email.</strong>.<br/> This is another line in the body of the email.</body></html>";
        mailItem.Display(false);

        System.Threading.Thread.Sleep(3000);

        mailItem.Close(OlInspectorClose.olSave);
        Marshal.ReleaseComObject(outlookApp);

1 Ответ

1 голос
/ 07 октября 2019

Чтобы получить открытый почтовый элемент в окне инспектора, вам необходимо:

  1. С помощью метода ActiveInspector получить экземпляр класса Inspector.
  2. Свойство Inspector.CurrentItem возвращает объект, представляющий текущий элемент, отображаемый в инспекторе.
  3. Установите любые свойства, такие как Subject, Body, Recipients и т. Д.

Чтобы получить встроенный ответ в окне проводника, вам необходимо использовать свойство Explorer.ActiveInlineResponse , которое возвращает объект item, представляющий активный элемент встроенного ответа в области чтения проводника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...