MailMessage в. NET: почему теги вставляются буквально в мои письма? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть эта функция отправки электронной почты:

''' <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/>? (Я бы проверил это, но у меня нет локального сервера электронной почты, поэтому я спрашиваю, что здесь делать, поэтому мне не нужно постоянно перебрасывать его через забор на тестовую площадку, чтобы увидеть результат электронная почта ...)

1 Ответ

0 голосов
/ 05 марта 2020

message.IsBodyHtml = True действительно исправил это, хотя я думал, что это не так; мы просто тестировали неправильную систему, думая, что она не исправлена. Упс! * * 1002

...