Как я могу добавить текст в текстовое поле Outlook, используя любую windows автоматизацию? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу добавить текст в раздел составления почты Outlook, используя любую windows технологию автоматизации в C#. Он должен сохранять свои свойства шрифта, это означает, что новый введенный текст должен быть в формате, который пользователь определил в своем внешнем виде.

Ранее я работал с методом SendKeys.Send () , но это ненадежно, потому что нет никакого смысла в том, что текст будет сгенерирован или нет.

Я пытался использовать user32.dll и System. Windows .Automation но не в состоянии этого достичь.

Кто-нибудь может мне помочь? Небольшой скрипт для теста очень поможет.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете использовать технологию COM Automation для автоматизации задач в Outlook. См. Автоматизация Outlook с использованием объектной модели Outlook в MSDN.

Существует три основных способа установки тела элементов Outlook:

  1. Свойство Body (простой текст).
  2. Свойство HTMLBody - позволяет настроить тело с использованием разметки HTML, как показано выше.
  3. Объектная модель Word. Outlook по умолчанию использует Word в качестве редактора электронной почты. Свойство WordEditor класса Inspector возвращает экземпляр класса Document, который представляет тело.

Подробнее об этих способах можно прочитать в Глава 17: Работа с телами элементов .

Как видите, только последние два позволяют выполнить вашу задачу.

Например, в следующем примере кода используется объектная модель Word для вставки текстовой строки в тело сообщения вновь созданный предмет:

using Outlook = Microsoft.Office.Interop.Outlook;
using Word = Microsoft.Office.Interop.Word;
namespace CreateAndEditMailItemUsingWord
{
    class Program
    {
        static void Main(string[] args)
        {
            Outlook.MailItem mailItem = (new Outlook.Application()).CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
            Word.Document wordDocument = mailItem.GetInspector.WordEditor as Word.Document;
            // Insert the text at the very beginning of the document
            // You can control fonts and formatting using the ParagraphFormat propety of the Word.Range object
            Word.Range wordRange = wordDocument.Range(0, 0);
            wordRange.Text = "Please insert your text here";
            mailItem.Display();
        }
    }
}
...