Question

J'ai une demande écrite en C # qui utilise Outlook Interop pour ouvrir un nouveau message pré-rempli de détails, l'utilisateur peut modifier avant d'envoyer manuellement.

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

Lorsque le même utilisateur crée un nouveau message manuellement la police est Calibri ou la police que l'utilisateur a défini comme défaut. Le problème est que le texte dans l'e-mail automatique apparaît dans Times New Roman font que nous ne voulons pas.

Si je considère la source de l'un des e-mails livrés je peux voir que Outlook a explicitement définir la police dans la source 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";
}

Pourquoi les différents formats et comment puis-je obtenir l'e-mail automatisé d'utiliser les paramètres par défaut des utilisateurs? J'utilise la version 11 des ensembles Interop comme il y a un mélange d'Outlook 2003 et 2007 est installé.

Était-ce utile?

La solution

Comme il est un e-mail HTML, vous pouvez facilement intégrer tout le style que vous voulez dans le corps HTML réel. Je soupçonne que est ce que Outlook est en train de faire lorsque vous créez un message à partir de l'interface graphique utilisateur Outlook.

Je ne sais pas vraiment comment obtenir les paramètres utilisateur. Je regardais à travers l'API Outlook (il est une bête étrange), mais n'a pas vu tout ce qui fournirait l'accès aux propriétés du message par défaut.

Autres conseils

Il est tout à fait frustrant.

Il ne permet pas que lorsque vous Google le problème il y a d'innombrables réponses vous disent simplement de style le texte en CSS. Yeeessss, très bien, si vous générez l'e-mail complète et le style peut / contrôler l'ensemble du texte. Mais dans votre cas (et le nôtre) l'intention est de lancer l'e-mail avec un texte initial et l'utilisateur final ajoute son propre texte. Il est son texte complémentaire qui est indéfectiblement rendu en Times New Roman.

La solution que nous avons trouvé est d'aborder le problème d'une autre direction. Et c'est de fixer la valeur par défaut de base / sous-jacente dans Outlook pour notre police sélectionnée au lieu de Times New Roman.

Cela peut se faire par:

  1. Ouvrez Word (oui, pas Outlook)
  2. Allez dans Options -> Avancé -> Options Web
  3. Modifier la police par défaut dans l'onglet Polices

Vidéo ici:
http://www.youtube.com/watch?v=IC2RvfoMFz8

J'apprécie cela ne suffit pas si vous besoin pour contrôler ou modifier la police d'un programme. Mais pour ceux qui travaillent avec les clients qui veulent simplement la police email de base à pas Times New Roman à chaque fois que des e-mails sont générés à partir du code, cela peut aider.

Il a été mon expérience que la création d'un e-mail n'utilise les paramètres de messagerie par défaut.

Vous définissez EXACTEMENT newMail.HTMLBody à une valeur, au lieu d'insérer votre code HTML en elle. Je parie que si vous avez examiné le contenu de HTMLBody il commencer par quelque chose en elle, comme le code css

CEPENDANT, chaque fois que vous essayez de lire une des valeurs e-mail, votre utilisateur reçoit le message contextuel de sécurité disant: « Un programme tente de access..blah bla bla »

Je suis tombé sur ce en essayant de maintenir la signature de l'utilisateur, jamais trouvé un bon moyen de le faire sans déclencher l'invite de sécurité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top