将包含Mysql数据的HTML电子邮件发送到应用程序内的表中

时间:2012-02-06 21:01:37

标签: c# mysql html

我有一个应用程序,我用来发送包含整个表的电子邮件,我不知道如何在那里获取动态数据。我确定我必须使用for循环,但我不知道如何用它来获取数据行。

这是我到目前为止所拥有的:

    msg.To.Add(selected);//put in custom account info
        msg.Subject = "Message Subject";
        msg.IsBodyHtml = true;
        msg.Body = "<html>"+
        "<body>"+
        "<center>"+
        "<h2>Your entire inventory:</h2>"+
        "<table>"+
        "<th>Product</th>"+
        //for each loop

        "<th>Quantity</th>"+
        //for each loop
            "</body>"+
            "</html>";

如果您需要任何其他代码,请告诉我。

2 个答案:

答案 0 :(得分:1)

就个人而言,我会避免使用字符串连接来构建HTML。它不仅会使您的代码变得笨拙,而且还会冒着编码输出时意外错误的风险。另一种方法是使用LINQ to XML来构建HTML。代码看起来像这样:

var html = new XDocument(
    new XElement("html",
        new XElement("body",
            new XElement("h2", "Your entire inventory:"),
            new XElement("table",
                new XElement("tr",
                    new XElement("th", "Product"),
                    from item in orders
                    select new XElement("td", item.ProductName)),
                new XElement("tr",
                    new XElement("th", "Quantity"),
                    from item in orders
                    select new XElement("td", item.Quantity))))));

msg.Body = html.ToString();

答案 1 :(得分:1)

我假设您已经拥有MySQL Connector for .NET。这里有一些代码可以让你朝着正确的方向前进。如果你不知道如何使用C#从数据库中读取,你应该阅读它。 MySQL Connector Documentation

只是一个简单的Product类来保存您需要的东西。

public class Product
{
    public String ProductName { get; set; }
    public Int32 Quantity { get; set; }
}

这是一个快速的数据库类概述。

 public class DB
{
    string connString = "Your Database Connection String";

    public List<Product> GetProductsAndQuantity()
    {
        string query = "SELECT product, quantity FROM yourTable";
        List<Product> prodList = new List<Product>();

        using (SqlConnection connection = new SqlConnection(connString))
        {

            SqlCommand cmd = new SqlCommand(query, connection);
            connection.Open();
            SqlDataReader reader = cmd.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    // Create new Product
                    Product p = new Product();
                    p.ProductName = (String)reader[0];
                    p.Quantity = (Int32)reader[1];
                    // Add product to list
                    prodList.Add(p);
                }
            }
            finally
            {
                reader.Close();
            }
        }

        return prodList;
    }
}

这是您构建电子邮件的地方。

DB db = new DB();

List<Product> prodList = db.GetProductsAndQuantity();
            msg.Body...
            msg.Body += " <table> <tr><th>Product</th> <th>Quantity</th></tr> ";

            foreach (Product p in prodList)
            {
                msg.Body += "<tr><td>" + p.ProductName + "</td><td>"
                         + p.Quantity + "</td></tr>";
            }

            msg.Body += "</table> ";