填写HTML模板并通过电子邮件发送结果

本文关键字:电子邮件 结果 HTML 填写 | 更新日期: 2023-09-27 18:21:35

我有一个HTML模板,还有一个返回许多数据的查询。我想填写我的html并通过电子邮件发送下面是我的代码。我想知道如何在datatable 中填写我的数据行

到目前为止,我已经这样做了:

public void GetInfo()
{
    string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connectionStrings"].ConnectionString;
    SqlConnection sqlConnection = new SqlConnection(connectionString);
    string query = "select X,Y,Z,E,U,S,M " +
                    "from MyTable where M = 0";
    DataTable dt = new DataTable();
    using (SqlCommand command = new SqlCommand(query, new SqlConnection(connectionString)))
    {
        command.CommandTimeout = 360;
        command.Connection.Open();
        dt.Load(command.ExecuteReader());
        command.Connection.Close();
    }
    List<XReportData> lvrd = new List<XReportData>();
    if (dt.Rows.Count > 0)
    {
        foreach (DataRow row in dt.Rows)
        {
            XReportData rd = new XReportData();
            rd.X = row["X"].ToString();
            rd.Y = row["Y"].ToString();
            rd.Z = row["Z"].ToString();
            rd.E = row["E"].ToString();
            rd.U = row["U"].ToString();
            rd.S = row["S"].ToString();
            rd.M = row["M"].ToString();
            lvrd.Add(rd);
        }

        dt.Dispose();
    }
}

这是我的HTML模板:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Untitled Document</title>
    <style type="text/css">
        To AVOID A LONG CODE I DELETED THIS PART HERE
    </style>
</head>
<body>
    <div class="newlayout_middlepanel_title">
        <div id="contentDescriptionDiv" class="newlayout_title">
            <span id="ctl00_ContentDescription_Label1">MY MESSAGE</span>
            <hr width="100%" style="border: solid 1px #f8f8f8">
        </div>
    </div>
    <div style="text-align: left" class="ResultBox">
        <div>
            <table cellpadding="5" cellspacing="0" border="1" style="border-collapse: collapse;" class="GridTable">
                <tbody>
                    <tr style="color: White; background-color: #5D7B9D; font-size: Small; font-weight: bold;">
                        <th scope="col" class="auto-style1">Info 1</th>
                        <th scope="col" class="auto-style2">Info 2</th>
                        <th scope="col">Info 3</th>
                    </tr>
                    [righeHtml]
                    <tr align="center" style="color: White; background-color: #284775;">
                        <td colspan="6">
                            <div style="height: 10px;"></div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</body>
</html>

它看起来像这样:我的消息

_______________________________________________
 |      Info 1     |    Info2    |    Info3    |
 -----------------------------------------------
 |  rd.x , rd.E,...|  rd.Y,rd.M  |rd.S,rd.Z,...| 
   and each row with my data

填写HTML模板并通过电子邮件发送结果

您可以使用xslt生成html。将数据表(XReport数据对象)串行化为xml。您可以通过描述如何将这些数据呈现到xslt中来生成html。

假设你有一个类

class XReport {
     public double X { get; set;}
     public double Y { get; set;}
     public double Z { get; set;}
}

在这个类的对象列表序列化之后。。。您可以将类的属性(将是列)引用到XSLT中,如下所示。

<table>
        <xsl:for-each select="XReports">
            <tr>
                <td>
                    <xsl:value-of select="X"/>
                </td>
                <td>
                    <xsl:value-of select="Y"/>
                </td>
                <td>
                    <xsl:value-of select="Z"/>
                </td>
                </xsl:for-each>
            </tr>
        </xsl:for-each>
</table>

在使用这个XSLT转换串行XML之后,您应该得到所需的HTML,您可以通过电子邮件发送:-)

https://msdn.microsoft.com/en-us/library/bb399419(v=vs.110).aspx