2010-02-19 137 views
1

如何將包含新行(回車符)的字符串發送到電子郵件?Visual Basic - 發送電子郵件返回電子郵件

問題是我將字符串發送到一封電子郵件,並且電子郵件將回車。

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 2010-02-19 15:50:21

+0

我添加了一些代碼。 – Lou 2010-02-22 16:41:04

回答

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 

希望這有助於。

編輯

好了,基於新的信息(關於電子郵件)上面依然如此。如果你添加到字符串生成器.Append你會失去,或更正確地,看不到換行符。相反,您必須使用.AppendLine這將在您的字符串的末尾添加所有重要的CR和LF代碼。

但是,我有點困惑你是如何發送電子郵件。我以前從網頁上看過這種方式,但從來沒有從vb.net上看過。以這種方式發送電子郵件幾乎肯定會迫使您發送沒有換行符的電子郵件!

我可以建議您從Microsoft瞭解如何使用System.Web.Mail命名空間從Visual Basic發送電子郵件。這並不難,你會忘記你發這樣的郵件有更多的控制....

Microsoft example

+0

我添加了更多信息。我錯了,沒有剝離新線。這是當字符串被髮送到一個電子郵件,新行被剝奪。 – Lou 2010-02-22 14:46:31

0

要任何人也找東西,將工作進展發送到電子郵件,你想幹什麼如在@CResults中回答,但在每行添加"%0A"。這將通過大多數電子郵件客戶端。

0

您也可以通過HTML格式與身體發送電子郵件像這樣實現這一點:

當郵件的正文是HTML格式,添加<br>標籤就在您的字符串。如果正文爲HTML格式,則vbCrLfStringBuilder不起作用。

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

如果不是以HTML格式,可以使用vbCrLfvbNewLine

Dim mail As New MailMessage 
mail.Body = "First Line" & vbCrLf 
mail.Body += "Second Line" & vbNewLine 
mail.Body += "Third Line"