У меня есть эта функция отправки электронной почты:
''' <summary>
''' Sends an email.
''' </summary>
''' <param name="from">Who is the email coming from?</param>
''' <param name="to">Who is the email going to?</param>
''' <param name="subject">Subject of the email.</param>
''' <param name="body">Body text of the email.</param>
''' <returns>true if an email was sent, false if sending failed.</returns>
Public Shared Function SendEmail(ByVal from As String, ByVal [to] As String, ByVal subject As String, ByVal body As String) As Boolean
' sanity check - can't send to nobody!
If String.IsNullOrWhiteSpace([to])
Return False
End If
' get http objects
Dim http = HttpContext.Current
Dim Request = http.Request
Dim Session = http.Session
Dim Response = http.Response
' find SMTP server
Dim smtpServer As String
If Request.ServerVariables("SERVER_NAME") = OverridableServerName Then
smtpServer = LocalServerName
Else
smtpServer = Request.ServerVariables("SERVER_NAME")
End If
' compose email
Try
Dim message As New MailMessage(from, [to], subject, body.Replace(vbCrLf, "<br/>"))
message.IsBodyHtml = True
Dim emailClient As New SmtpClient(smtpServer)
emailClient.Send(message)
Return True
Catch ex As Exception
Dim uri = New Uri(Request.Url.PathAndQuery, UriKind.Relative).ToString()
' trim off the query string
If (uri.IndexOf("?") >= 0)
uri = uri.Substring(0, uri.IndexOf("?"))
End If
Response.Redirect("ErrorPage.asp?ErrorMsg=From " & uri & "<br><br>" & smtpServer & "<br>" & from & "<br>" & [to] & "<br>" & subject & "<br>" & Replace(body, vbCrLf, "<br>") & "<br>" & Replace(ex.Message, vbCrLf, "<br>"))
Return False
End Try
End Function
Проблема в том, что, хотя я устанавливаю флаг IsBodyHtml
в значение true, теги <br/>
, которые я заменяю символами новой строки, отображаются буквально а не как новые строки в получающемся электронном письме. Есть лучший способ сделать это? Не следует ли заменить символы новой строки тегами <br/>
? (Я бы проверил это, но у меня нет локального сервера электронной почты, поэтому я спрашиваю, что здесь делать, поэтому мне не нужно постоянно перебрасывать его через забор на тестовую площадку, чтобы увидеть результат электронная почта ...)