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