2009-07-01 25 views
8

Tengo una aplicación escrita en C# que usa Outlook Interop para abrir un nuevo mensaje de correo lleno de detalles que el usuario puede editar antes de enviarlo manualmente.Outlook Interop, Formato de correo

var newMail = (Outlook.MailItem)outlookApplication.CreateItem(
    Outlook.OlItemType.olMailItem); 
newMail.To = "[email protected]"; 
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 en el correo electrónico automático aparece en fuente Times New Roman 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 usar la configuración predeterminada de los usuarios? Estoy usando la versión 11 de los ensamblados de interoperabilidad, ya que hay una mezcla de Outlook 2003 y 2007 instalada.

Respuesta

2

Dado que es un correo electrónico HTML, puede insertar fácilmente el estilo que desee en el cuerpo HTML real. Sospecho que eso es lo que hace Outlook al crear un mensaje desde la GUI de Outlook.

Realmente no sé cómo obtener la configuración del usuario. Miré a través de la API de Outlook (es una bestia extraña), pero no vi nada que pudiera proporcionar acceso a las propiedades predeterminadas del mensaje.

+0

No es realmente lo que quería ... ¡pero probablemente sea tan bueno como lo que voy a conseguir por ahora! –

0

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

Está estableciendo EXACTLY newMail.HTMLBody con un valor, en lugar de insertar el código HTML en él. Apuesto si examinó el contenido de HTMLBody que comenzaría con algo en él, como el código CSS

SIN EMBARGO, cada vez que intente LEER de uno de los valores de correo electrónico, su usuario recibirá la ventana emergente de seguridad diciendo "A programa está tratando de acceder ... blah blah blah "

Me encontré con esto cuando trato de mantener la firma del usuario, nunca encontré una buena manera de obtenerlo sin activar el indicador de seguridad.

+0

En el caso de Error Genérico, ¿de dónde viene Times New Roman? Veo un comportamiento similar pero no puedo encontrar mi fuente de origen. – Ben

+0

Además. Aunque especifico que el formato del cuerpo es HTML, cambia a Texto sin formato. Si no proporciono ningún contenido de mensaje, entonces mantiene la configuración de formato HTML. Si aplico el cuerpo de texto, cambia a texto sin formato. – Ben

6

Es totalmente frustrante.

No ayuda que cuando Google el problema hay un sinnúmero de respuestas que le dicen simplemente estilo el texto en CSS. Sí, sí, si está generando el correo electrónico completo y puede darle estilo/control al texto completo. Pero en su caso (y el nuestro) la intención es lanzar el correo electrónico con un texto inicial y el usuario final agrega su propio texto. Es su texto adicional el que se reproduce indefectiblemente en Times New Roman.

La solución que encontramos es abordar el problema desde otra dirección. Y eso es para arreglar el predeterminado base/subyacente en Outlook para que sea nuestra fuente seleccionada en lugar de Times New Roman.

que se pueden hacer por:

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

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

Agradezco que esto no ayude si necesita para controlar o variar la fuente mediante programación. Pero para aquellos que trabajan con clientes que simplemente quieren que la fuente de correo electrónico base sea no sea Times New Roman cada vez que se generen correos electrónicos a partir del código, esto puede ayudar.

Cuestiones relacionadas