Pregunta

Tengo una aplicación escrita en C # que utiliza Outlook interoperabilidad para abrir un nuevo mensaje de correo pre-llenado con detalles el usuario puede editar antes de enviar manualmente.

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);

Cuando el mismo usuario crea un nuevo mensaje manualmente la fuente se establece en Calibri o el que sea la fuente que el usuario ha establecido como su defecto. El problema es que el texto del correo electrónico automático aparece en Times New Roman tipo de letra que no queremos.

Si me vista de origen de uno de los correos electrónicos entregados puedo ver que Outlook ha establecido explícitamente la fuente en la fuente del correo electrónico:

// 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";
}

¿Por qué son los formatos diferentes y cómo puedo obtener el correo electrónico automatizado para utilizar la configuración por defecto los usuarios? Estoy usando la versión 11 de los ensamblados de interoperabilidad, ya que es una mezcla de Outlook 2003 y 2007 instalado.

¿Fue útil?

Solución

Dado que se trata de un correo electrónico HTML, que fácilmente puede incrustar cualquier estilo que desee en el cuerpo HTML real. Sospecho que es lo que está haciendo de Outlook cuando se crea un mensaje de la interfaz gráfica de usuario de Outlook.

En realidad no sé cómo llegar a la configuración de usuario. Miré a través de la API de Outlook (que es una bestia extraña), pero no vi nada que pudiera proporcionar acceso a las propiedades de los mensajes por defecto.

Otros consejos

Es totalmente frustrante.

No ayuda a que cuando se busca en Google el problema hay un sinnúmero de respuestas que le dice que simplemente estilo el texto en el CSS. Yeeessss, bien, si se está generando el estilo de correo electrónico y la lata llena / controlar la totalidad del texto. Pero en su caso (y la nuestra) la intención es poner en marcha el correo electrónico con un texto inicial y el usuario final, añade su propio texto. Es su texto adicional que se vuelve indefectiblemente en Times New Roman.

La solución que encontramos es abordar el problema desde otra dirección. Y es que para fijar la base / default que subyace en Outlook a ser nuestra fuente seleccionada en lugar de Times New Roman.

Eso se puede hacer por:

  1. Abra Word (sí, no Outlook)
  2. Ir a Opciones -> Avanzado -> Opciones de Internet
  3. Cambiar la fuente predeterminada en la ficha Fuentes

Video aquí:
http://www.youtube.com/watch?v=IC2RvfoMFz8

aprecio esto no ayuda si necesidad para controlar o variar el tipo de letra mediante programación. Pero para aquellos que trabajan con los clientes que desean simplemente la letra e-mail a base de no Times New Roman cada vez que los correos electrónicos se generan a partir de código, esto puede ayudar.

Ha sido mi experiencia que la creación de un correo electrónico hace uso de los ajustes de correo electrónico predeterminado.

Está tratando de ajustar exactamente newMail.HTMLBody a un valor, en lugar de insertar el código HTML en ella. Apuesto a que si usted examinó el contenido de HTMLBody sería empezar con algo en ella, al igual que el código CSS

Sin embargo, cada vez que intento de leer uno de los valores de correo electrónico, el usuario obtendrá la ventana emergente de seguridad diciendo "Un programa está intentando access..blah bla bla"

Me encontré con este cuando se trata de mantener la firma del usuario, nunca he encontrado una buena manera de conseguirlo sin que se dispare la consulta de seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top