Вопрос

У меня есть приложение, написанное на 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);

Когда тот же пользователь создает новое сообщение вручную, шрифт устанавливается на Калибри или любой другой шрифт, который пользователь установил по умолчанию.Проблема в том, что текст в автоматическом электронном письме отображается в Таймс Нью Роман шрифт, который нам не нужен.

Если я просматриваю источник одного из доставленных электронных писем, я вижу, что 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.

Это было полезно?

Решение

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

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

Другие советы

Это совершенно расстраивает.

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

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

Это можно сделать следующим образом:

  1. Откройте Word (да, не Outlook)
  2. Перейдите в «Параметры» -> «Дополнительно» -> «Параметры Интернета».
  3. Измените шрифт по умолчанию на вкладке «Шрифты».

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

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

По моему опыту, при создании электронного письма ДЕЙСТВИТЕЛЬНО используются настройки электронной почты по умолчанию.

Вы ТОЧНО устанавливаете значение newMail.HTMLBody вместо того, чтобы вставлять в него свой HTML.Могу поспорить, что если бы вы изучили содержимое HTMLBody, оно бы началось с чего-то, например, с кода CSS.

ОДНАКО, каждый раз, когда вы пытаетесь ЧИТАТЬ одно из значений электронной почты, ваш пользователь получит всплывающее окно безопасности с сообщением: «Программа пытается получить доступ… бла-бла-бла»

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top