Domanda

Ho un'applicazione scritta in C # che utilizza Outlook Interop per aprire un nuovo messaggio di posta elettronica pre-riempite con particolari l'utente può modificare prima di inviare 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);

Quando lo stesso utente crea un nuovo messaggio manualmente il tipo di carattere è impostato su Calibri o qualsiasi tipo di carattere utente ha impostato il loro default. Il problema è che il testo della e-mail automatica appare in Times New Roman di carattere che non vogliamo.

Se ho vista origine di uno dei messaggi di posta elettronica forniti posso vedere che Outlook ha fissato in modo esplicito il tipo di carattere nella fonte e-mail:

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

Perché sono i formati differenti e come posso ottenere l'e-mail automatizzata per utilizzare le impostazioni predefinite utenti? Sto usando la versione 11 dei assembly di interoperabilità in quanto v'è un mix di Outlook 2003 e 2007 installato.

È stato utile?

Soluzione

Poiché si tratta di una e-mail HTML, si può facilmente incorporare qualsiasi stile che si desidera nel corpo HTML vero e proprio. Ho il sospetto che è quello che Outlook sta facendo quando si crea un messaggio dalla GUI Outlook.

Io in realtà non so come ottenere le impostazioni utente. Ho guardato attraverso l'API di Outlook (si tratta di una strana bestia), ma non ho visto nulla che possa fornire l'accesso alle proprietà del messaggio di default.

Altri suggerimenti

E 'assolutamente frustrante.

Non aiuta che quando si google il problema ci sono innumerevoli risposte che ti dice di semplicemente stile il testo in CSS. Yeeessss, bene, se si sta generando l'e-mail e la lattina pieno stile / controllare l'intero testo. Ma nel tuo caso (e la nostra) l'intenzione è quella di lanciare l'e-mail con un testo iniziale e l'utente finale aggiunge il suo proprio testo. E 'il suo testo aggiuntivo che viene immancabilmente reso in Times New Roman.

La soluzione che abbiamo trovato è quello di affrontare il problema da un'altra direzione. E questo è per fissare la base / base di default in Outlook per essere il nostro carattere selezionato invece di Times New Roman.

Questo può essere fatto da:

  1. Aprire Word (sì, non Outlook)
  2. Vai a Opzioni -> Avanzate -> Opzioni Web
  3. Modificare il carattere predefinito nella scheda Tipi di carattere

Il video qui:
http://www.youtube.com/watch?v=IC2RvfoMFz8

Mi rendo conto questo non aiuta se necessità per controllare o modificare il tipo di carattere a livello di codice. Ma per coloro che lavorano con i clienti che vogliono semplicemente il tipo di carattere e-mail di base di non in Times New Roman quando le email sono generati dal codice, questo può aiutare.

E 'stata la mia esperienza che la creazione di una e-mail FA utilizzare le impostazioni di posta elettronica predefinito.

siete esattamente impostando newMail.HTMLBody ad un valore, invece di inserire il codice HTML in esso. Scommetto che se avete esaminato il contenuto di HTMLBody sarebbe iniziare con qualcosa in esso, come il codice css

Tuttavia, ogni volta che si tenta di leggere da uno dei valori di posta elettronica, l'utente otterrà il popup di sicurezza dicendo "Un programma sta tentando di access..blah bla bla"

Mi sono imbattuto in questo quando si cerca di mantenere la firma dell'utente, mai trovato un buon modo per farlo senza innescare la domanda di sicurezza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top