包含 HTML 内容的电子邮件未正确显示

Email with HTML content not showing up properly

我正在尝试查询数据库并发送电子邮件正文中的内容。内容是订单和每个用户的详细信息。我正在尝试调用脚本任务来编写正文,并且我正在使用发送电子邮件任务中的内容。脚本如下

namespace ST_c2e68b3edd6842c4a6554376987c97c1
{
    [Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {

        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        }

        public void Main()
        {
            var data = Dts.Variables["User::EmailData"].Value;

            OleDbDataAdapter da = new OleDbDataAdapter();
            DataTable dt = new DataTable();
            da.Fill(dt, data);

            Dts.Variables["User::EmailMessage"].Value = ConvertDataTableToHTML(dt);
            Dts.TaskResult = (int)ScriptResults.Success;
        }


        public static string ConvertDataTableToHTML(DataTable dt)
        {
            string html = "<table border ='1'>";
            //add header row
            html += "<tr>";
            for (int i = 0; i < dt.Columns.Count; i++)
                html += "<th>" + dt.Columns[i].ColumnName + "</th>";
            html += "</tr>";
            //add rows
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                html += "<tr style='color:blue;'>";
                for (int j = 0; j < dt.Columns.Count; j++)
                    html += "<td>" + dt.Rows[i][j].ToString() + "</td>";
                html += "</tr>";
            }
            html += "</table>";
            return html;
        }
    }
}

其中 User::EmailMessage 是一个字符串,我正在使用像

这样的电子邮件正文

但在我的电子邮件中正文看起来像

如何在电子邮件中正确显示 HTML。非常感谢任何帮助

如下所示:

在SSIS中执行SQL任务

SQL 声明:EXEC dbo.usp_GenerateEmailBody ?

我能够使解决方案正常工作,而不是调用发送电子邮件任务,在脚本任务中我正在发送如下电子邮件

private void SendEmail(string messageBody, string userEmailId)
        {
            ConnectionManager smtpConnectionManager = Dts.Connections["SMTP Connection Manager"];
            SmtpClient emailClient = new SmtpClient(smtpConnectionManager.Properties["SmtpServer"].GetValue(smtpConnectionManager).ToString());

            MailMessage email = new MailMessage();
            email.Priority = MailPriority.Normal;
            email.IsBodyHtml = true;
            email.From = new MailAddress("d@abc.org");
            email.To.Add(userEmailId);
            email.Subject = "Order Details - " + DateTime.Now.ToString("dd-MM-yyyy");
            email.Body = messageBody;
            emailClient.Send(email);
        }
    }

此设置有助于电子邮件在 email.IsBodyHtml = true;

中正确显示 html