HTMLBody和WordEditor.CheckSpelling在内联响应上似乎不太喜欢对方
本文关键字:喜欢 响应 WordEditor CheckSpelling HTMLBody | 更新日期: 2023-09-27 18:16:01
问题来了。当内联响应打开时,我可以毫无问题地编辑它。然后,当我通过word编辑器运行拼写检查时,我失去了通过电子邮件的HMTLBody进行编辑的能力。我的意思是,如果我这样做:
email.HTMLBody = email.HTMLBody.Replace("cat", "dog");
它不会改变电子邮件的正文。如果我在更改后突出显示email
, HTMLBody将显示更改,但它不会显示在电子邮件中。
这是我做拼写检查的方式
Outlook.Inspector insp = email.GetInspector;
Word.Document Doc = insp.WordEditor;
if(!doc.SpellingChecked)
{
doc.CheckSpelling();
email.Save();
}
如果你需要任何信息,请告诉我。
编辑
所以,多考虑一下@Dmitry说的话,我决定回去使用电子邮件中的.WordEditor
。这是结果。
我可以很好地使用word编辑器编辑电子邮件正文,但它会重新格式化整个电子邮件(删除回复/转发分隔行),并用回复颜色(对我来说是蓝色)为整个电子邮件上色。我能够通过使用文档的.Range
中的开始值和结束值来解决这个问题,如下所示:
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");
代替
Word.Document emailEditor = GetCurrentMailWordEditor();
Word.Range rng = emailEditor.Range();
rng.Text = rng.Text.Replace("cat", "dog");
我能够通过从正确的来源获得.WordEditor
来修复拼写检查,如下所示:
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();
}
如果你已经有了Word的Document对象的实例,为什么不使用Word对象模型来替换文本呢?