我有一封由 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 關注
- 237 瀏覽
添加回答
舉報
0/150
提交
取消