2009-11-02 8 views
1

Ci-dessous est mon extrait de code pour envoyer un email:Comment envoyer du texte formaté dans un courrier électronique en utilisant C#?


  MySqlCommand cmdsd; 
      MySqlConnection conn; 
      string s23 = ""; 
      conn = new MySqlConnection("server=localhost;database=projecttt;uid=root;password=techsoft"); 
      conn.Open(); 

      //smtp which will be loaded is webmail.techsofttechnologies.com 
      cmdsd = new MySqlCommand("select smtp from smtp", conn); 
      MySqlDataReader dr45 = cmdsd.ExecuteReader(); 

      while (dr45.Read()) 
      { 
       s23 = dr45.GetString(0).Trim(); 
      } 
      string s1 = textBox3.Text; 
      string s4 = textBox1.Text; 
      string S5 = textBox2.Text; 
      string attachment = textBox5.Text; 
      MailMessage mail = new MailMessage(); 
      mail.From = new MailAddress(s4, S5); 
      mail.BodyEncoding = Encoding.UTF8;     
      mail.To.Add(s1); 
      mail.Subject = textBox4.Text; 
      mail.Body = "<body>"+textBox6.Text+"</body>";     
      //mail.Body = textBox6.AppendText("\n"); 

      AlternateView planview = AlternateView.CreateAlternateViewFromString("This is my plain text content, viewable tby those clients that don't support html"); 
      AlternateView htmlview = AlternateView.CreateAlternateViewFromString("<b>This is bold text and viewable by those mail clients that support html<b>"); 
      mail.IsBodyHtml = true; 
      mail.Priority = MailPriority.High; 
      System.Net.Mail.Attachment jil = new System.Net.Mail.Attachment(attachment); 
      mail.Attachments.Add(jil); 
      SmtpClient smtp = new SmtpClient(s23); 
      try 
      { 
       smtp.Send(mail); 
      } 

      catch (Exception ex) 
      { 
       Exception exc = ex; 
       string Message = string.Empty; 
       while (exc != null) 
       { 
        Message += exc.ToString(); 
        exc = exc.InnerException; 
       } 
      } 
      conn.Close(); 
      this.Close(); 
     } 
     catch (Exception err) 
     { 
      MessageBox.Show(err.Message); 
     } 

    } 

Le corps du message contient le texte avec des sauts de ligne.

Mais je n'arrive pas à formater le texte. Dans le courrier, il apparaît comme une ligne continue avec un espace remplaçant les sauts de ligne.

Comment puis-je le faire fonctionner comme prévu?

+0

Ainsi, dans le textBox6 vous avez linebreakes et lorsque vous envoyez l'e-mail les sauts de ligne sont remplacés par l'espace, est-ce que j'understnad c'est vrai? – Kovu

+0

Dans ce code, vous envoyez le contenu de textBox6 - donc sans savoir ce que vous mettez dans son genre de difficile de voir ce qui devrait sortir. Si l'envoi de courrier au format HTML que vous allez avoir besoin d'utiliser

et
Murph

+4

Vous ne se soucient probablement pas, mais tout le monde peut voir le mot de passe de votre serveur de messagerie maintenant ... –

Répondre

0

Tous,

Merci pour toute l'aide que vous avez donné.

j'ai eu la réponse dans le lien suivant

http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/Q_23552772.html?sfQueryTermInfo=1+bodi+c+email+format+send+while

Fondamentalement, la fonction de remplacement donnera la réponse.

La réponse complète est comme ci-dessous:


  //The text will be loaded here 
      string s2= textBox6.Text;  

      //All blank spaces would be replaced for html subsitute of blank space(&nbsp;) 
      s2 = s2.Replace(" ", "&nbsp;");   

      //Carriage return & newline replaced to <br/> 
      s2=s2.Replace("\r\n", "<br/>");     
      string Str = "<html>"; 
      Str += "<head>"; 
      Str += "<title></title>"; 
      Str += "</head>"; 
      Str += "<body>"; 
      Str += "<table border=0 width=95% cellpadding=0 cellspacing=0>"; 
      Str += "<tr>"; 
      Str += "<td>" + s2 + "</td>"; 
      Str += "</tr>"; 
      Str += "</table>"; 
      Str += "</body>"; 
      Str += "</html>";       
      mail.Subject = textBox4.Text;       
      mail.Body = Str;   

1

Pour la version HTML de l'e-mail, vous devrez remplacer les sauts de ligne par des tags <br />. Un simple string.Replace devrait le faire. Pour l'email en clair, je vais deviner que votre email est formaté comme vous avez besoin et que vous utilisez Outlook pour recevoir l'e-mail. Outlook supprime utilement ce qu'il considère être des espaces supplémentaires (ce qui tend à être n'importe quel espace). Il y a une option pour l'éteindre, habituellement donnée en haut de la fenêtre quand vous ouvrez complètement le message.

Pour éteindre pour Outlook entièrement:

Outils>options>Préférences>E-mail Options de ...> Décocher Supprimer les sauts de ligne supplémentaires dans les messages texte brut

+0

Non, je n'utilise pas Outlook. Mais je vais essayer l'option de remplacement –

5

Vous devez probablement convertir les retours à la ligne en ruptures HTML appropriées:

text.Replace("\n", "<br/>") 
+0

Salut merci pour le poste. Mais ça ne fonctionne pas. Je pense qu'il n'y a pas de mal dans la logique. –

+1

Salut Le concept a fonctionné quand je l'ai fait text.Replace ("\ r \ n", "
") –

Questions connexes