2010-02-19 4 views
1

Как я могу отправить строку в электронное письмо с новыми строками (возврат каретки)?Visual Basic - отправка каретки Возврат к E-Mail

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

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) 
+1

Можете ли вы предоставить код, который демонстрирует проблему? Как вы добавляете новые строки в StringBuilder в первую очередь? – Nick

+0

Я добавил код. – Lou

ответ

1

Я предполагаю, что вы добавляете в свой 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 example

+0

Я добавил дополнительную информацию. Я ошибался, топор не был лишен новых линий. Это когда строка отправляется по электронной почте, что новые строки удаляются. – Lou

0

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

0

Вы также могли бы добиться этого, отправив письмо с телом в формате 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" 
Смежные вопросы