为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
神不在的星期二 2022-06-18 16:20:18
我有一封由 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_EXSETSELEM_STREAMINSF_RTF | SFF_SELECTION) Windows API 消息。然后,您可以将生成的 RTF 流式传输出去。



查看完整回答
反对 回复 2022-06-18
?
千万里不及你

TA贡献1784条经验 获得超9个赞

好的,我想出了一种解决方法,方法是显示电子邮件以便显示签名,然后获取 mailItem 的 HTMLBody,并将其放入 webbrowser 文档实例中,然后将其复制并粘贴到富文本框,然后然后将富文本框文本编码为 RTFBody 中的字节数组。

它可以将正确的信息放在那里,但没有正确的字体和颜色。如果有另一种使用实际 HTMLBody 的方法,我想知道如何......


查看完整回答
反对 回复 2022-06-18
  • 2 回答
  • 0 关注
  • 264 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号