HTMLBody e WordEditor.CheckSpelling parece não gostar uns dos outros inline resposta
-
22-12-2019 - |
Pergunta
Então aqui está o problema.Quando uma linha de resposta é aberto eu sou capaz de editá-lo sem qualquer problema.Então, quando eu executar a verificação ortográfica através do editor de texto, eu perder a capacidade de editar através do HMTLBody de e-mail.Por isso, quero dizer que se eu fizer algo parecido com isto:
email.HTMLBody = email.HTMLBody.Replace("cat", "dog");
isso não vai mudar o corpo no e-mail.Se eu destaque email
depois de feitas as alterações, o HTMLBody vai mostrar as alterações, mas ele não vai aparecer no e-mail.
Agora, se eu fizer tudo da edição de primeiro e em seguida, fazer a verificação ortográfica, ele vai passar por todo o texto que é errado, mas não vai alterar o texto de e-mail.Isso só acontece para o corpo do e-mail pelo caminho.Posso alterar Para:, CC: e Assunto:campos de multa não importa o que aconteça.Ele também afeta apenas a linha respostas e não de qualquer e-mail que bateu para fora em seu próprio inspetor.Eu posso iniciar uma resposta de uma linha e, em seguida, o pop e o problema não ocorrerá.
Esta é a maneira que eu estou fazendo a verificação ortográfica
Outlook.Inspector insp = email.GetInspector;
Word.Document Doc = insp.WordEditor;
if(!doc.SpellingChecked)
{
doc.CheckSpelling();
email.Save();
}
Se você precisar de qualquer informação me avise.
EDITAR
Então, colocando um pouco mais de pensamento sobre o que o @Dmitry disse, decidi voltar e trabalhar usando o .WordEditor
no e-mail.Este são os resultados.
Eu era capaz de editar o corpo do email muito bem usando o editor de texto, mas seria reformatar o e-mail completo (remover responder/reencaminhar linhas de separação) e a cor de todo o e-mail com a resposta de cor (azul para mim).Eu era capaz de corrigir isso com o usando o valor de início e término do .Range
do documento, como por exemplo:
Word.Document emailEditor = GetCurrentMailWordEditor(); // A function I use to retrieve the correct editor
Word.Range rng = emailEditor.Range(startIndex, endIndex); // To get only the specific part I want to change
rng.Text = rng.Text.Replace("cat", "dog");
em vez de
Word.Document emailEditor = GetCurrentMailWordEditor();
Word.Range rng = emailEditor.Range();
rng.Text = rng.Text.Replace("cat", "dog");
A verificação ortográfica eu era capaz de corrigir, obtendo o .WordEditor
a partir de que a origem correta assim:
Word.Document doc;
if(this.Application.ActiveInspector() != null)
{
OutlookInspector insp = this.Application.GetActiveInspector();
doc = insp.WordEditor;
}
else
{
Outlook.Explorer exp = this.Applicaotn.GetActiveExplorer();
doc = exp.ActiveInlineResponseWordEditor;
}
if(!doc.SpellingChecked)
{
doc.CheckSpelling();
email.Save();
}
Solução
Se você já tiver uma instância do objeto de Documento do Word, por que não fazer a substituição de texto usando o Modelo de Objeto do Word como assim?