2010-02-19 14 views
1

Comment envoyer une chaîne à un e-mail avec de nouvelles lignes (retours chariot) incluses?Visual Basic - Envoi d'un retour de chariot à un e-mail

Le problème est que j'envoie la chaîne à un e-mail, et l'e-mail supprime les retours chariot.

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

Pouvez-vous fournir un code qui démontre la question? Comment ajoutez-vous de nouvelles lignes au StringBuilder en premier lieu? – Nick

+0

J'ai ajouté du code. – Lou

Répondre

1

Je devine que vous ajoutez à votre StringBuilder sans nouvelles lignes que je viens de tester et il fonctionne très bien pour moi.

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 

Pour le code ci-dessus, je reçois la sortie suivante

Line 1 
Line 2 
Line 3 
Line 4 without CRLFLine 5 

Hope this helps.

EDIT

Ok, donc sur la base des nouvelles informations (sur l'e-mail) ci-dessus est encore le cas. Si vous ajoutez à un stringbuilder avec .Append vous perdrez, ou plus correctement, ne pas voir de nouvelles lignes. Au lieu de cela, vous devez utiliser .AppendLine qui ajoutera tous les codes CR et LF importants sur la fin de votre chaîne.

Cependant, je suis un peu confus comment vous envoyez un courriel. Je l'ai vu fait de cette façon à partir d'une page Web avant mais jamais de vb.net. Envoyer un e-mail de cette façon vous obligera presque certainement à envoyer un e-mail sans retour à la ligne! Puis-je vous suggérer de regarder ce qui suit de Microsoft sur la façon d'envoyer des courriels à partir de Visual Basic en utilisant l'espace de noms System.Web.Mail. Il n'est pas difficile et vous aurez beaucoup plus de contrôle sur l'e-mail que vous envoyez cette façon ....

Microsoft example

+0

J'ai ajouté plus d'informations. J'avais tort, la tostring n'était pas dépouillée des nouvelles lignes. C'est quand la chaîne est envoyée à un email que les nouvelles lignes sont supprimées. – Lou

0

Pour tous ceux qui cherchent aussi quelque chose qui fonctionnera envoyé au courrier électronique allé, vous voulez faire comme dans @CResults répondre, mais ajouter "%0A" à chaque ligne. Cela permettra à la plupart des clients de messagerie.

0

Vous pouvez également y parvenir en envoyant le courrier électronique avec le corps en format HTML comme ceci:

Lorsque le corps du message est au format HTML, ajoutez les <br> tags dans votre chaîne. vbCrLf et StringBuilder ne fonctionnent pas si le corps est au format HTML.

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

Si ce n'est pas au format HTML, vous utilisez vbCrLf ou vbNewLine:

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