Взаимодействие Outlook, Форматирование Почты

у меня есть приложение, написанное на C#, которое использует Outlook Interop для открытия нового почтового сообщения, предварительно заполненного деталями, которые пользователь может редактировать перед отправкой вручную.

var newMail = (Outlook.MailItem)outlookApplication.CreateItem(
    Outlook.OlItemType.olMailItem);
newMail.To = "example@exam.ple";
newMail.Subject = "Example";
newMail.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
newMail.HTMLBody = "<p>Dear Example,</p><p>Example example.</p>";
newMail.Display(false);

Если же пользователь создает новое сообщение вручную шрифт для Колибри или какой шрифт пользователь установил по умолчанию. Проблема в том, что текст в автоматическом письме появляется в Times New Roman шрифт, который мы не хотим.

Если я вид источник одного из доставленных писем я вижу, что Outlook явно установил шрифт в источнике электронной почты:

// Automated
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
    margin:0cm;
    margin-bottom:.0001pt;
    font-size:12.0pt;
    font-family:"Times New Roman";
}

// Manual
p.MsoNormal, li.MsoNormal, div.MsoNormal
{
    margin:0cm;
    margin-bottom:.0001pt;
    font-size:11.0pt;
    font-family:"Calibri","sans-serif";
}

почему форматы отличаются и как я могу получить автоматическую электронную почту для использования настроек пользователей по умолчанию? Я использую версию 11 сборок взаимодействия, поскольку установлено сочетание Outlook 2003 и 2007.

3 ответов


поскольку это HTML-письмо, вы можете легко встроить любой стиль, который вы хотите в фактическое тело HTML. Я подозреваю, что это то, что Outlook делает при создании сообщения из GUI Outlook.

Я не знаю, как получить настройки пользователя. Я просмотрел API Outlook (это странный зверь), но не увидел ничего, что обеспечило бы доступ к свойствам сообщения по умолчанию.


это полностью расстраивает.

Это не помогает, что, когда Вы Google проблема есть бесчисленные ответы говорят вам просто стиль текст в CSS. Yeeessss, отлично, если вы генерируете полную электронную почту и можете стилизовать/контролировать весь текст. Но в вашем случае (и нашем) намерение состоит в том, чтобы запустить электронное письмо с некоторым начальным текстом, и конечный пользователь добавляет свой собственный текст. Это его дополнительный текст, который неизменно отображается в Times New Римский.

решение, которое мы нашли, состоит в том, чтобы подойти к проблеме с другого направления. И это исправить базовое / базовое значение по умолчанию в Outlook, чтобы быть нашим выбранным шрифтом вместо Times New Roman.

Это можно сделать с помощью:

  1. открыть Word (да, не Outlook)
  2. перейти к опции - > дополнительно - > веб-параметры
  3. изменить шрифт по умолчанию на вкладке шрифты

видео здесь:
http://www.youtube.com/watch?v=IC2RvfoMFz8

Я ценю, что это не помогает, если вы нужно для программного управления или изменения шрифта. Но для тех, кто работает с клиентами, которые просто хотят, чтобы базовый шрифт электронной почты не be Times New Roman всякий раз, когда электронные письма генерируются из кода, это может помочь.


по моему опыту, создание электронной почты использует настройки электронной почты по умолчанию.

вы точно устанавливаете newMail.HTMLBody к значению, вместо того, чтобы вставлять в него HTML. Держу пари, если вы изучили содержимое HTMLBody, оно начнется с чего-то в нем, например css-кода

однако, в любое время, когда вы пытаетесь прочитать из одного из значений электронной почты, ваш пользователь получит всплывающее окно безопасности, говорящее: "программа пытается получить доступ..бла бла бла"

Я столкнулся с этим при попытке сохранить подпись пользователя, никогда не находил хорошего способа получить его без запуска подсказки безопасности.