向电子邮件添加转发文本

本文关键字:文本 转发 添加 电子邮件 | 更新日期: 2023-09-27 18:32:11

我在添加文本以转发电子邮件时遇到了一个小问题。这是我当前的代码:

private void ForwardFunction(Outlook.MailItem email)
{
    Outlook.MailItem forwardEmail = ((Outlook._MailItem)email).Forward();
    Outlook.Inspector forwardInsp = forwardEmail.GetInspector;
    Word.Document forwardDoc = forwardInsp.WordEditor;
    Word.Range forwardRange = forwardDoc.Range(0,1);
    string forwardText = "This is some text";
    forwardRange.Text = forwardText + forwardRange.text
    newEmail.Recipients.Add("myemail");
    forwardEmail.Save();
    ((Outlook._MailItem)forwardEmail).Send();
}

我已经浏览了它,它确实将文本添加到范围中,但是当我收到转发的电子邮件时,它不包含任何其他文本。我使用类似的代码成功编辑用户正在编辑的当前电子邮件(新建、回复/转发、内联回复),但传递给函数的电子邮件是收件箱中当前选择的电子邮件。不确定这是否重要,可能是因为它没有被用户编辑。

我找不到以编程方式转发的电子邮件添加新文本的特定方法。

向电子邮件添加转发文本

对于对此感兴趣的其他人,我最终使用了.HTMLBody。似乎使用 .GetInspector 要么获取_email的检查器而不是fEmail,您无法对其进行编辑,要么获得正确的检查器但无法编辑它。无论哪种方式,使用.HTMLBody似乎都可以绕过它。

Outlook.MailItem fEmail = ((Outlook._MailItem)_email).Forward();
string forwardText;
forwardText = "class=MsoNormal>";
forwardText += "This is my forwarded message";
forwardText += "Bonus hyper link <a href='" + hyperlinkText + "'>" + hyperlinkText + "</a>";
var regex = new Regex(Regex.Escape("class=MsoNormal>"));
fEmail.HTMLBody = regex.Replace(fEmail.HTMLBody, forwardText, 1);
fEmail.Save();
fEmail.AutoForwarded = true;
((Outlook._MailItem)fEmail).Send();