Pergunta

Eu tenho um aplicativo escrito em C # que usa Outlook Interop para abrir uma nova mensagem de correio pré-preenchido com detalhes o usuário pode editar antes de enviá-lo 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 o mesmo usuário cria uma nova mensagem manualmente a fonte está definido como Calibri ou qualquer tipo de letra que o usuário definiu como seu padrão. O problema é que o texto nos aparece de e-mail automático em Times New Roman fonte que não queremos.

Se eu ver fonte de um dos e-mails entregues eu posso ver que o Outlook definir explicitamente a fonte na 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";
}

Por que são os formatos diferentes e como posso obter o e-mail automático para usar as configurações de usuários padrão? Eu estou usando a versão 11 dos módulos de interoperabilidade como há uma mistura de Outlook 2003 e 2007 instalado.

Foi útil?

Solução

Uma vez que é um e-mail HTML, você pode facilmente incorporar tudo o styling que você quer para o corpo HTML real. Eu suspeito que é o que Outlook está fazendo quando você cria uma mensagem do GUI Outlook.

Eu realmente não sei como obter as configurações do usuário. Olhei através da API Outlook (é uma besta estranha), mas não vi nada que daria acesso às propriedades de mensagem padrão.

Outras dicas

É totalmente frustrante.

Não ajuda que quando você Google o problema há inúmeras respostas dizendo que você simplesmente estilo o texto em CSS. Yeeessss, bem, se você está gerando o e-mail e pode estilo cheio / controlar o texto inteiro. Mas no seu caso (e nosso) a intenção é lançar o e-mail com algum texto inicial e o usuário final adiciona seu próprio texto. É seu texto adicional que é infalivelmente prestados em Times New Roman.

A solução que encontrei é abordar o problema de outra direção. E isso é para fixar a base / subjacente padrão no Outlook para ser a nossa fonte selecionada em vez de Times New Roman.

Isso pode ser feito por:

  1. Open Word (sim, não Outlook)
  2. Vá para Opções -> Avançado -> Opções da Web
  3. Alterar a fonte padrão na guia Fontes

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

Eu aprecio isso não ajuda se você necessidade para controlar ou variar a fonte de programação. Mas para aqueles que trabalham com os clientes que simplesmente querem a fonte email base para não ser Times New Roman, sempre que e-mails são gerados a partir do código, essa ajuda pode.

Tem sido minha experiência que a criação de um e-mail usa as configurações de e-mail padrão.

Você é exatamente definir newMail.HTMLBody para um valor, em vez de inserir o HTML nele. Aposto que se você examinar o conteúdo de HTMLBody seria começar com algo nele, como o código css

No entanto, quando você tenta ler a partir de um dos valores de e-mail, o usuário receberá o pop-up de segurança dizendo "Um programa está tentando access..blah blah blah"

Eu corri para este ao tentar manter a assinatura do usuário, nunca encontrou uma boa maneira de obtê-lo sem provocar a segurança rápida.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top