HTMLBody و WordEditor.CheckSpelling لا يبدو أن مثل بعضها البعض على استجابة مضمنة

StackOverflow https://stackoverflow.com//questions/25063598

سؤال

لذا هنا تكمن المشكلة.عندما مضمنة الرد فتحت أنا قادرة على تحريره من دون أي مشكلة.ثم, عند تشغيل التدقيق الإملائي خلال كلمة محرر أفقد القدرة على تحرير خلال HMTLBody البريد الإلكتروني.أعني بذلك أنه إذا كنت تفعل شيئا مثل هذا:

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

هذا لن يغير الجسم في البريد الإلكتروني.إذا كنت تسليط الضوء email بعد إجراء التغييرات ، HTMLBody سوف تظهر التغييرات ، ولكن لن تظهر في البريد الإلكتروني.

الآن, إذا كنت تفعل كل شيء من التحرير أولا ، ثم هل التدقيق الإملائي ، وسوف تذهب من خلال كل من النص الذي هو الخطأ ، لكن ذلك لن يغير الفعلية نص البريد الإلكتروني.يحدث هذا فقط على الجسم من البريد الإلكتروني بالمناسبة.يمكنني تغيير إلى:, CC: ، و هذا الموضوع:الحقول على ما يرام لا يهم ما يحدث.كما يؤثر فقط على مضمنة الردود و لا أي البريد الإلكتروني التي برزت في نفسه المفتش.أن نبدأ الرد كما مضمنة ثم البوب و سوف لا تحدث المشكلة.

هذه هي الطريقة التي أقوم التدقيق الإملائي

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

إذا كنت بحاجة إلى أي معلومات اسمحوا لي أن أعرف.

تحرير

لذا وضع أكثر قليلا فكرت في ما @وقال ديمتري, قررت العودة والعمل على استخدام .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();
}
هل كانت مفيدة؟

المحلول

إذا كان لديك بالفعل مثيل من Word كائن المستند, لماذا لا تفعل استبدال نص باستخدام طراز كائن Word ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top