Visual Basic — отправка возврата каретки по электронной почте

StackOverflow https://stackoverflow.com/questions/2296360

Вопрос

Как я могу отправить строку на электронное письмо с включенными новыми строками (возвратом каретки)?

Проблема в том, что я отправляю строку на электронное письмо, а в электронном письме отсутствуют символы возврата каретки.

Dim myApp As New Process

    emailStringBuilder.Append("mailto:")

    emailStringBuilder.Append("&subject=" & tmpID & " - " & subject)

    emailStringBuilder.Append("&body= " & msgStringBuilder.ToString)

    myApp = System.Diagnostics.Process.Start(emailStringBuilder.ToString)
Это было полезно?

Решение

Я предполагаю, что вы добавляете в свой StringBuilder без перевода строки, поскольку я только что протестировал его, и у меня он отлично работает.

Imports System.Text
Module Module1
    Sub Main()
        Dim sb As New StringBuilder
        sb.AppendLine("Line 1")
        sb.AppendLine("Line 2")
        sb.Append("Line 3" & vbCrLf)
        sb.Append("Line 4 without CRLF")
        sb.Append("Line 5")
        Console.WriteLine(sb.ToString)
    End Sub
End Module

Для приведенного выше кода я получаю следующий вывод

Line 1
Line 2
Line 3
Line 4 without CRLFLine 5

Надеюсь это поможет.

РЕДАКТИРОВАТЬ

Итак, судя по новой информации (об электронном письме), вышеизложенное остается верным.Если вы добавите в построитель строк с помощью .Append вы потеряете или, точнее, не увидите переводы строк.Вместо этого вы должны использовать .AppendLine который добавит все важные коды CR и LF в конец вашей строки.

Однако я немного смущен тем, как вы отправляете электронную почту.Раньше я видел, как это делается на веб-странице, но никогда на vb.net.Отправка электронного письма таким способом почти наверняка заставит вас отправить электронное письмо без перевода строки!

Могу ли я предложить вам посмотреть следующее от Microsoft о том, как отправлять электронную почту из Visual Basic с использованием пространства имен System.Web.Mail.Это несложно, и вы получите гораздо больше контроля над электронными письмами, которые отправляете таким образом....

Пример Microsoft

Другие советы

Всем, кто ищет что-то, что будет работать, было отправлено на электронную почту, вы хотите сделать, как в ответе @CResults, но добавить "%0A" к каждой строке.Это позволит передать сообщение большинству почтовых клиентов.

Вы также можете добиться этого, отправив электронное письмо с телом в формате HTML, например:

Если тело сообщения имеет формат HTML, добавьте <br> теги прямо в вашей строке. vbCrLf и StringBuilder не работает, если тело находится в формате HTML.

Dim mail As New MailMessage
mail.IsBodyHtml = True
mail.Body = "First Line<br>"
mail.Body += "Second Line<br>"
mail.Body += "Third Line"

Если он не в формате HTML, вы используете vbCrLf или vbNewLine:

Dim mail As New MailMessage
mail.Body = "First Line" & vbCrLf
mail.Body += "Second Line" & vbNewLine
mail.Body += "Third Line"
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top