Visual Basic — отправка возврата каретки по электронной почте
-
21-09-2019 - |
Вопрос
Как я могу отправить строку на электронное письмо с включенными новыми строками (возвратом каретки)?
Проблема в том, что я отправляю строку на электронное письмо, а в электронном письме отсутствуют символы возврата каретки.
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.Это несложно, и вы получите гораздо больше контроля над электронными письмами, которые отправляете таким образом....
Другие советы
Всем, кто ищет что-то, что будет работать, было отправлено на электронную почту, вы хотите сделать, как в ответе @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"