猿问

带有 Outlook 的 C#...将签名添加到 RTFBody 电子邮件而不是 HTMLBody

我有一封由 C# 使用 Outlook Interop 生成的电子邮件,但我需要使用 RTFBody,因为它是 RTF 格式的,而不是 HTMLBody,这是我看到能够在其中添加签名的所有示例的地方。


我正在尝试做类似的事情,但这对我不起作用。有什么建议可以让它在 Outlook 2016 中工作吗?


MyOutlook.Mailitem oMailItem =(MyOutlook.MailItem)oApp.CreateItem(MyOutlook.olItemType.olMailItem);

oMailItem.Display(oMailItem); //create the empty mail item

oMailItem.To = emailform.ToMain;

oMailItem.CC = ccStrings;

oMailItem.BCC = emailForm.BCC;

oMailItem.Subject = emailForm.Subject;

oMailItem.RTFBody = GetRTBText(); //function to get RTF byte array


private byte[] GetRTBText() {

   Clipboard.Clear();

   RTBBody.SelectAll();

   RTBBody.Copy();

   return Encoding.UTF8.GetBytes(Clipboard.GetText(TextDataFormat.Rtf));


}

更新:


因此,当我使用 omail.RTFBody 对 oMail.HTMLBody 执行类似的技巧并用它连接某些东西时,看起来我可以显示签名。现在的问题是原始项目没有显示,因为它说你不能添加字节[]。我要么需要覆盖这个实例的 + 运算符,要么弄清楚如何向它添加一个空字节 arr ......


因此,我尝试将返回的字节数组与空字节数组连接起来。引发内存不足异常。我试图与 oMailItem.RTFBody 电子邮件项目本身连接,同样的问题......


不知道还能做什么......当我这样做时,即使它抛出一个错误,签名也会出现,只是电子邮件的正文没有。


神不在的星期二
浏览 265回答 2
2回答

长风秋雁

您可以将 RTF 正文读入隐藏的 RTF 控件,加载 RTF 签名文件数据,然后将其插入到 RTF 控件中——我为此使用了EM_EXSETSEL/ EM_STREAMIN( SF_RTF | SFF_SELECTION) Windows API 消息。然后,您可以将生成的 RTF 流式传输出去。

千万里不及你

好的,我想出了一种解决方法,方法是显示电子邮件以便显示签名,然后获取 mailItem 的 HTMLBody,并将其放入 webbrowser 文档实例中,然后将其复制并粘贴到富文本框,然后然后将富文本框文本编码为 RTFBody 中的字节数组。它可以将正确的信息放在那里,但没有正确的字体和颜色。如果有另一种使用实际 HTMLBody 的方法,我想知道如何......
随时随地看视频慕课网APP
我要回答