2013-02-26 107 views
1

我試圖替換電子郵件正文中的一些文本,但每當我這樣做似乎搞砸了簽名文本的格式。例如,如果我嘗試email.Body.Replace("Info", "Information")那麼這樣的文字:將文本添加到電子郵件。文本格式化與文本

名姓
標題

信息
網站:www.stackoverflow.com

變爲:

名姓
標題

信息
網站:HYPERLINK 「http://www.stackoverflow.com/」 www.stackoverflow.com

出現這種情況,即使只是一個簡單的除了像email.Body += "text"文本。

除此之外,它還將字體從Arial 10切換到Calabri 12(當Arial 10是Signiture字體時,這可能與Calabri 12是默認電子郵件文本有關)。

我將如何保存當前電子郵件正文的格式,以便在向其中添加文本時,我可以將其設置回去,或者將文本添加到正文以保持格式的最佳方式是什麼?

您的幫助將受到歡迎。

+1

一些代碼會很好。這看起來像一個RTF超鏈接。嘗試將您的文本添加到RTFBody – Sorceri 2013-02-26 20:14:09

回答

1

MailMessage.Body可以格式化爲RTF格式,我認爲它在默認情況下或HTML格式。是你頂貼的消息實際上看起來是這樣的:

{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} 
{\colortbl ;\red0\green0\blue255;} 
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sl240\slmult1\lang9\f0\fs22 First Last \par 
Title \par 
\par 
Info \par 
Website: {\field{\*\fldinst{HYPERLINK "www.stackoverflow.com"}}{\fldrslt{\ul\cf1 www.stackoverflow.com}}}\f0\fs22\par 
} 

我假設追加「文本」,到了年底是造成RTF消息被不正確地解析,導致損失格式。

http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.body.aspx

+0

我將其標記爲答案,因爲您提到了email.HTMLBody。我通過在HMTLBody結尾的''之前創建一個HTML'

'來結束使用HTMLBody。我會用更多的細節發佈另一個答案,但是這要感謝蒂姆,我得到了這個。 – Natzely 2013-02-26 22:41:39

0

所以,我最後用的是email.HTMLBody做。我創建了一個類似於HTML已有的段落。這是塊:(我的HTML是不是很好,所以...很多,如果是複製/粘貼一些編輯)

<p class=MsoNormal> 
    <b> 
     <span style='font-size:10.0pt;font-family:"Arial","sans-serif"'>Replace Text 
     </span> 
    </b> 
</p> 

我設置爲一個字符串,說htmlPar,然後做一個替換:

string htmlReplace = htmlPar.Replace("Replace Text", myNewText");

這將創建一個段落塊,我可以添加到任何與我的文字是HTML。要真正把它添加到我做一個像與string.replace所以HTMLBody結束:

string temp = email.HTMLBody.Replace("</body></html>", htmlReplace + "</body></html>"); 
email.HTMLBody = temp; 

有了這個,我能保留原來的格式在電子郵件的其餘部分。就像我說的那樣,我的HTML並不好,所以我不確定這是否可以用來添加文本,或者用這種方法實現的方法有多好。

無論哪種方式,我希望這可以幫助其他人在路上。