2010-01-21 92 views
2

我想從我的C#網站發送一封smtp電子郵件。它發送罰款除了當一個文本框文本中有換行符時,它不會在電子郵件中格式化它們,而是隻有一長串文本。文本框文本爲c中的電子郵件的HTML#

的電子郵件HTML編碼,因此如何使這樣的:

tbDeliver.Text

保持在電子郵件中的換行符?

在此先感謝

回答

8

嘗試這種情況:

var textBoxText = tbDeliver.Text.Replace(Environment.NewLine, "<br>"); 
+0

upvoted for Environment.NewLine – 2010-01-21 17:30:14

+0

Yeh good call,keep it platform agnostic。 – Lloyd 2010-01-21 17:32:10

0

你可以在用。文本替換<br/>\r\n可能的工作,你輸出一個段落<p>

0

您需要將\n替換爲<br>tbDeliver.Text

string formatted = tbDeliver.Text.Replace ("\n", "<br />"); 
0

HTML編碼的換行符爲 '< BR/>' 或 '<p>' 標籤。

2

確保消息的正文格式爲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; 
+0

是使用.Net和我有。謝謝 – Andy 2010-01-22 09:05:26

3

我這樣做是使用正則表達式,以確保我得到換行符的任何味道:

Regex matchNewLine = new Regex("\r\n|\r|\n", RegexOptions.Compiled | RegexOptions.Singleline); 
string result = matchNewLine.Replace(originalText, "<br />"); 
-1

ACK!

永遠不會一直使用使用Environment.NewLine替換<BR>在電子郵件中的標籤。

我不能強調這一點。

在某些平臺上,Environment.NewLine將是\ n的,這在SMTP世界中是一個巨大的禁忌。

在SMTP中,所有換行符都必須是\ r \ n。

最終,您的郵件將被某些僅使用\ n的服務器拒絕爲垃圾郵件。

始終使用\ r \ n或vbCrLf替換<br>標籤。

+0

你正在閱讀錯誤的問題。換行符不是來自或放入電子郵件,而是來自頁面上的表單。該電子郵件是從一個表單中構建的,該表單中包含需要包含在電子郵件中的文本框。該文本框將具有'Environment.NewLine'作爲行分隔符。這確實可以是'\ r \ n'或'\ n',具體取決於平臺。由於OP沒有指定平臺'Environment.NewLine'是最好的選擇。這個換行符(來自下一個框)被轉換爲'
'。 – 2016-11-08 15:40:26

相關問題