從我們的系統發送純文本電子郵件時,今天我有一個有趣的錯誤。我們這樣格式化消息:MailMessage.Body使用Encoding丟失CrLf.UTF8
-1st發生了一些事情blab bla。
-2nd別的事發生了blab blab blaa bla。
今天,我們有一個看起來像這樣的電子郵件:
- 一次事情發生泄密喇嘛。
-2nd發生其他事情blab blab blaa bla $ 1000.00 -3rd發生了一些事情。
因此,上面我們看到,我們丟失了CrLf,但僅限於沒有周期並以0結尾的消息。我瀏覽了代碼,發現CrLf在我們發送電子郵件之前一直處於進入狀態。我找到下面的代碼了,我猜測它適用於C#和:
注:建立對身體的字符串時,我們使用Environment.NewLine
。
構建字符串:
If Not errorList Is Nothing Then
If errorList.Count > 0 Then
strBldrBody.Append(EMailHelper.CrLf)
strBldrBody.Append(EMailHelper.CrLf)
strBldrBody.Append("Response Error List:")
For Each itm As String In errorList
strBldrBody.Append(EMailHelper.CrLf)
strBldrBody.Append(DataHelper.DASH)
strBldrBody.Append(itm)
Next
End If
End If
電子郵件編碼設置:
Try
If Not String.IsNullOrEmpty(recipient) Then
Using mailMsg As MailMessage = New MailMessage()
mailMsg.From = New MailAddress(_configHelper.EmailFrom)
mailMsg.Subject = subject
mailMsg.Body = body
mailMsg.BodyEncoding = Encoding.UTF8
EMailHelper.SetToAddress(recipient, mailMsg)
Dim smtpClient As SmtpClient = New SmtpClient(_configHelper.EmailRelayServer)
smtpClient.Send(mailMsg)
End Using
End If
Catch ex As System.Exception
'logs error
End Try
我想知道在字符串翻譯的utf-8編碼/解碼期間發生了什麼刪除CrLf ?!
的問題展望,見下圖: outlook screen shot
「正在粘住」並不意味着什麼。代碼片段不可能重現問題。 – 2011-02-24 16:47:08
@Hans:我認爲他的意思是「完好無損,直到......」 – 2011-02-24 16:53:52