Visual Basic - отправка возврата каретки на электронную почту - PullRequest
1 голос
/ 19 февраля 2010

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

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

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)

Ответы [ 3 ]

1 голос
/ 19 февраля 2010

Полагаю, вы добавляете в свой 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

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

EDIT

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

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

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

Пример Microsoft

0 голосов
/ 12 мая 2016

Этого также можно добиться, отправив электронное письмо с телом в формате 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"
0 голосов
/ 10 декабря 2014

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

...