2010-12-07 3 views
0

Quel est le meilleur moyen de passer d'un ensemble de données au corps d'un e-mail?asp.net C# convertir des données dans un ensemble de données dans le corps d'un e-mail?

J'ai une application console .net pour envoyer une notification par e-mail en fonction des résultats d'un proc stocké et je voulais savoir comment passer au mieux des données SQL au corps du courriel?

html corps avec des couleurs et des polices serait le mieux, mais le texte en clair est également très bien.

merci.

+0

Pour quoi faire? Maintenabilité? La vitesse? Lisibilité? Fiabilité? Débit? Autre chose? – Oded

+0

Comment voulez-vous appliquer la couleur et les polices sur un texte brut que vous avez stocké sur un serveur SQL? –

Répondre

0
static string getHTML(DataTable dt) { 
     StringBuilder myBuilder = new StringBuilder(); 

     myBuilder.Append("<table border='1px' cellpadding='5' cellspacing='0' "); 
     myBuilder.Append("style='border: solid 1px Silver; font-size: x-small;'>"); 

     myBuilder.Append("<tr align='left' valign='top'>"); 
     foreach (DataColumn myColumn in dt.Columns) 
     { 
      myBuilder.Append("<td align='left' valign='top'>"); 
      myBuilder.Append(myColumn.ColumnName); 
      myBuilder.Append("</td>"); 
     } 
     myBuilder.Append("</tr>"); 

     foreach (DataRow myRow in dt.Rows) 
     { 
      myBuilder.Append("<tr align='left' valign='top'>"); 
      foreach (DataColumn myColumn in dt.Columns) 
      { 
       myBuilder.Append("<td align='left' valign='top'>"); 
       myBuilder.Append(myRow[myColumn.ColumnName].ToString()); 
       myBuilder.Append("</td>"); 
      } 
      myBuilder.Append("</tr>"); 
     } 
     myBuilder.Append("</table>"); 

     return myBuilder.ToString(); 
    } 
+0

J'ai un doute général, si le constructeur de chaîne est la seule option pour créer html dynamiquement dans C#? –

1

Comment est-ce:

  1. Référence System.Web (ajouter à l'aide System.Web.UI.WebControls;)
  2. DataGrid Instantiate ou GridView ou tout autre sortie que vous aimez
  3. Bind DataTable
  4. Rendu en chaîne - utiliser quelque chose comme

    var buffer = new StringBuilder(); 
    var tw = new HtmlTextWriter(new StringWriter(buffer))) 
    datagrid.RenderControl(tw); 
    var emailbodyHtmlPart = buffer.ToString(); 
    
  5. Faites cela pour chaque DataTable DataSet
  6. Ajouter les résultats au format html corps email

Ceci est, bien sûr, non testé, mais devrait fonctionner en principe.

Questions connexes