所以这就是问题所在。打开内联响应后,我可以毫无问题地对其进行编辑。然后,当我通过单词编辑器运行拼写检查时,我无法通过电子邮件的 HMTLBody 进行编辑。我的意思是,如果我这样做:
email.HTMLBody = email.HTMLBody.Replace("cat", "dog");
它不会改变电子邮件中的正文。如果我email
在更改后突出显示,HTMLBody 将显示更改,但不会显示在电子邮件中。
现在,如果我先进行所有编辑然后进行拼写检查,它将检查所有错误的文本,但不会更改实际的电子邮件文本。顺便说一句,这只发生在电子邮件正文中。无论发生什么,我都可以更改 To:、CC: 和 Subject: 字段。它也只影响内联响应,而不影响弹出到它自己的检查器中的任何电子邮件。我可以将回复作为内联开始,然后弹出它,问题就不会发生。
这就是我进行拼写检查的方式
Outlook.Inspector insp = email.GetInspector;
Word.Document Doc = insp.WordEditor;
if(!doc.SpellingChecked)
{
doc.CheckSpelling();
email.Save();
}
如果您需要任何信息,请告诉我。
编辑
所以,多想一下@Dmitry 所说的话,我决定回去继续使用.WordEditor
来自电子邮件的内容。这是结果。
我可以使用文字编辑器很好地编辑电子邮件正文,但它会重新格式化整个电子邮件(删除回复/转发分隔线)并用回复颜色(对我来说是蓝色)为整个电子邮件着色。我可以通过使用.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();
}