Pregunta

Entonces aquí está el problema.Cuando se abre una respuesta en línea, puedo editarla sin ningún problema.Luego, cuando ejecuto el corrector ortográfico a través del editor de palabras, pierdo la capacidad de editar a través del HMTLBody del correo electrónico.Con esto quiero decir que si hago algo como esto:

email.HTMLBody = email.HTMLBody.Replace("cat", "dog");

no cambiará el cuerpo del correo electrónico.si destaco email Una vez realizados los cambios, HTMLBody mostrará los cambios, pero no aparecerá en el correo electrónico.

Ahora, si hago toda la edición primero y entonces Haga la revisión ortográfica, revisará todo el texto incorrecto, pero no cambiará el texto real del correo electrónico.Por cierto, esto solo sucede con el cuerpo del correo electrónico.Puedo cambiar Para:, CC: y Asunto:Los campos están bien, pase lo que pase.También afecta solo a las respuestas en línea y no a ningún correo electrónico que aparezca en su propio inspector.Puedo comenzar una respuesta en línea y luego abrirla y el problema no ocurrirá.

Esta es la forma en que estoy revisando la ortografía.

Outlook.Inspector insp = email.GetInspector;
Word.Document Doc = insp.WordEditor;
if(!doc.SpellingChecked)
{
    doc.CheckSpelling();
    email.Save();
}

Si necesitas alguna información házmelo saber.

EDITAR

Entonces, pensando un poco más en lo que dijo @Dmitry, decidí regresar y trabajar en el uso del .WordEditor desde el correo electrónico.Estos son los resultados.

Pude editar bastante bien el cuerpo del correo electrónico usando el editor de Word, pero reformateaba todo el correo electrónico (eliminaba las líneas de separación de respuesta/reenvío) y coloreaba todo el correo electrónico con el color de respuesta (azul para mí).Pude solucionar este problema usando el valor inicial y final en el .Range del documento así:

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

en lugar de

Word.Document emailEditor = GetCurrentMailWordEditor();
Word.Range rng = emailEditor.Range();
rng.Text = rng.Text.Replace("cat", "dog");

La revisión ortográfica la pude solucionar obteniendo el .WordEditor de la fuente correcta así:

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();
}
¿Fue útil?

Solución

Si ya tiene una instancia del objeto de documento de Word, ¿por qué no hacer el reemplazo de texto usando el modelo de objetos de Word?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top