我想從我的C#網站發送一封smtp電子郵件。它發送罰款除了當一個文本框文本中有換行符時,它不會在電子郵件中格式化它們,而是隻有一長串文本。文本框文本爲c中的電子郵件的HTML#
的電子郵件HTML編碼,因此如何使這樣的:
tbDeliver.Text
保持在電子郵件中的換行符?
在此先感謝
我想從我的C#網站發送一封smtp電子郵件。它發送罰款除了當一個文本框文本中有換行符時,它不會在電子郵件中格式化它們,而是隻有一長串文本。文本框文本爲c中的電子郵件的HTML#
的電子郵件HTML編碼,因此如何使這樣的:
tbDeliver.Text
保持在電子郵件中的換行符?
在此先感謝
嘗試這種情況:
var textBoxText = tbDeliver.Text.Replace(Environment.NewLine, "<br>");
你可以在用。文本替換<br/>
\r\n
可能的工作,你輸出一個段落<p>
?
您需要將\n
替換爲<br>
的tbDeliver.Text
。
string formatted = tbDeliver.Text.Replace ("\n", "<br />");
HTML編碼的換行符爲 '< BR/>' 或 '<p>' 標籤。
確保消息的正文格式爲Html類型。如果您使用的System.Web發送郵件:如果您使用system.net
System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
mail.BodyFormat = Web.Mail.MailFormat.Html;
:
System.Net.Mail.MailMessage mail = New System.Net.Mail.MailMessage();
mail.IsBodyHtml = True;
是使用.Net和我有。謝謝 – Andy 2010-01-22 09:05:26
我這樣做是使用正則表達式,以確保我得到換行符的任何味道:
Regex matchNewLine = new Regex("\r\n|\r|\n", RegexOptions.Compiled | RegexOptions.Singleline);
string result = matchNewLine.Replace(originalText, "<br />");
ACK!
永遠不會一直使用使用Environment.NewLine替換<BR>在電子郵件中的標籤。
我不能強調這一點。
在某些平臺上,Environment.NewLine將是\ n的,這在SMTP世界中是一個巨大的禁忌。
在SMTP中,所有換行符都必須是\ r \ n。
最終,您的郵件將被某些僅使用\ n的服務器拒絕爲垃圾郵件。
始終使用\ r \ n或vbCrLf替換<br>標籤。
你正在閱讀錯誤的問題。換行符不是來自或放入電子郵件,而是來自頁面上的表單。該電子郵件是從一個表單中構建的,該表單中包含需要包含在電子郵件中的文本框。該文本框將具有'Environment.NewLine'作爲行分隔符。這確實可以是'\ r \ n'或'\ n',具體取決於平臺。由於OP沒有指定平臺'Environment.NewLine'是最好的選擇。這個換行符(來自下一個框)被轉換爲'
'。 –
2016-11-08 15:40:26
upvoted for Environment.NewLine – 2010-01-21 17:30:14
Yeh good call,keep it platform agnostic。 – Lloyd 2010-01-21 17:32:10