오늘 우리 시스템에서 일반 텍스트 전자 메일을 보낼 때 흥미로운 버그가있었습니다. 다음과 같은 형식으로 메시지를 형식화합니다.MailMessage.Body가 Encoding.UTF8로 CrLf를 잃었습니다.
-1 번 blab bla가 발생했습니다.
-2 번째 다른 일이 blab blab blaa bla 발생했습니다.
-1 뭔가 수다 즐 무슨 일이 있었 :
오늘 우리는이 안쪽의 이메일을했다.
-2 번째 다른 일이 있었다 blab blab blaa bla $ 1000.00 -3rd 뭔가가 발생했습니다.
위와 같이, 위와 같이 마침표가없고 0으로 끝난 메시지에 대해서만 CrLf를 잃어버린 것을 볼 수 있습니다. 코드를 살펴본 후 전자 메일을 보낼 때까지 CrLf가 들어간 것으로 나타났습니다.
참고 : 몸의 캐릭터를 구축 할 때 우리는 Environment.NewLine
을 사용 나는 내가 그것뿐만 아니라 C#을 적용 추측하고, 아래로 아래의 코드를 추적.
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
이메일 인코딩 설정 :
문자열 구축 I는 UTF-8 인코딩/디코딩시 문자열 변환에 무슨 일이 있었는지 알고 싶어
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
을 그 CrLf를 제거합니까?! outlook screen shot
'압정에'그가 의미는 '그대로'하지 '압정까지에 "아무것도 의미하지 않는다. 코드 스 니펫은 문제를 재현 할 수 없습니다. –
@ 한스 : 그는 "그 때까지는 ..."이라고 생각했습니다. –