我有一封由 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 itemoMailItem.To = emailform.ToMain;oMailItem.CC = ccStrings;oMailItem.BCC = emailForm.BCC;oMailItem.Subject = emailForm.Subject;oMailItem.RTFBody = GetRTBText(); //function to get RTF byte arrayprivate byte[] GetRTBText() { Clipboard.Clear(); RTBBody.SelectAll(); RTBBody.Copy(); return Encoding.UTF8.GetBytes(Clipboard.GetText(TextDataFormat.Rtf));}更新:因此,当我使用 omail.RTFBody 对 oMail.HTMLBody 执行类似的技巧并用它连接某些东西时,看起来我可以显示签名。现在的问题是原始项目没有显示,因为它说你不能添加字节[]。我要么需要覆盖这个实例的 + 运算符,要么弄清楚如何向它添加一个空字节 arr ......因此,我尝试将返回的字节数组与空字节数组连接起来。引发内存不足异常。我试图与 oMailItem.RTFBody 电子邮件项目本身连接,同样的问题......不知道还能做什么......当我这样做时,即使它抛出一个错误,签名也会出现,只是电子邮件的正文没有。
2 回答
长风秋雁
TA贡献1757条经验 获得超7个赞
您可以将 RTF 正文读入隐藏的 RTF 控件,加载 RTF 签名文件数据,然后将其插入到 RTF 控件中——我为此使用了EM_EXSETSEL/ EM_STREAMIN( SF_RTF | SFF_SELECTION) Windows API 消息。然后,您可以将生成的 RTF 流式传输出去。
千万里不及你
TA贡献1784条经验 获得超9个赞
好的,我想出了一种解决方法,方法是显示电子邮件以便显示签名,然后获取 mailItem 的 HTMLBody,并将其放入 webbrowser 文档实例中,然后将其复制并粘贴到富文本框,然后然后将富文本框文本编码为 RTFBody 中的字节数组。
它可以将正确的信息放在那里,但没有正确的字体和颜色。如果有另一种使用实际 HTMLBody 的方法,我想知道如何......
- 2 回答
- 0 关注
- 264 浏览
添加回答
举报
0/150
提交
取消
