c# - tipo - formato predeterminado outlook 2010
Interoperabilidad de Outlook, Formato de Correo (3)
Tengo una aplicación escrita en C # que usa Outlook Interop para abrir un nuevo mensaje de correo con los detalles que el usuario puede editar antes de enviarlo manualmente.
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 de forma manual, la fuente se establece en Calibri o en cualquier fuente que el usuario haya establecido como predeterminada. El problema es que el texto en el correo electrónico automático aparece en Times New Roman, que no queremos.
Si veo el origen de uno de los correos electrónicos entregados, puedo ver que Outlook ha establecido explícitamente la fuente en el origen 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é los formatos son diferentes y cómo puedo obtener el correo electrónico automático 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.
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.
Según mi experiencia, crear un correo electrónico SÍ usa la configuración de correo electrónico predeterminada.
Está EXACTAMENTE configurando newMail.HTMLBody en un valor, en lugar de insertar su HTML en él. Apuesto a que si examinabas el contenido de HTMLBody, comenzaría con algo en él, como el código css
SIN EMBARGO, cada vez que intente LEER desde uno de los valores de correo electrónico, su usuario recibirá la ventana emergente de seguridad diciendo "Un programa está tratando de acceder ... bla, bla, bla".
Me encontré con esto cuando trato de mantener la firma del usuario, nunca encontré una buena manera de obtenerlo sin activar el mensaje de seguridad.
Es totalmente frustrante.
No ayuda que cuando busque el problema en Google, haya un sinnúmero de respuestas que le indiquen simplemente darle un estilo al 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.
Eso se puede hacer por:
- Abrir Word (sí, no Outlook)
- Vaya a Opciones -> Avanzado -> Opciones web
- Cambie la fuente predeterminada en la pestaña Fuentes
Video aquí:
http://www.youtube.com/watch?v=IC2RvfoMFz8
Aprecio que esto no ayude si necesita 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 no sea Times New Roman cada vez que se generan correos electrónicos a partir del código, esto puede ayudar.