You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS脚本任务生成HTML内容发邮件无法正常显示问题咨询

问题原因

SSIS 内置的 Send Email Task 仅支持纯文本格式的邮件正文,即便传入的变量是HTML格式字符串,它也会默认将所有内容作为纯文本处理,所以收件人会直接看到原始HTML标签,不会渲染成表格。

解决方案

方案1:用Script Task直接发送HTML邮件(推荐)

直接在现有Script Task中添加发邮件逻辑,无需再调用Send Email Task,代码中明确指定正文为HTML格式即可,参考代码如下:

using System.Net.Mail;

public void Main()
{
    // 原有获取数据、生成HTML的逻辑保留
    var data = Dts.Variables["User::EmailData"].Value;
    OleDbDataAdapter da = new OleDbDataAdapter();
    DataTable dt = new DataTable();
    da.Fill(dt, data);
    string emailHtmlBody = ConvertDataTableToHTML(dt);

    // 新增发邮件逻辑
    MailMessage mail = new MailMessage();
    mail.From = new MailAddress("你的发件人邮箱地址");
    mail.To.Add("收件人邮箱地址");
    mail.Subject = "订单及用户详情报表";
    // 关键配置:指定正文为HTML格式
    mail.IsBodyHtml = true;
    mail.Body = emailHtmlBody;

    SmtpClient smtp = new SmtpClient("你的SMTP服务器地址", 端口号);
    // 若SMTP需要身份验证则添加下方配置
    smtp.Credentials = new System.Net.NetworkCredential("发件人账号", "发件人密码");
    // 若SMTP需要SSL加密则添加下方配置
    smtp.EnableSsl = true;

    smtp.Send(mail);

    Dts.TaskResult = (int)ScriptResults.Success;
}

将代码中的发件人信息、SMTP服务器配置替换为实际使用的参数即可,无需再调用原有Send Email Task。

方案2:调整Send Mail Task配置+补充HTML声明(兼容性一般)

如果一定要使用自带的Send Mail Task,可以按以下步骤调整:

  • 选中Send Mail Task,打开属性面板,找到Expressions属性,点击右侧省略号按钮
  • 新建表达式,属性选择MessageSource,值设置为@[User::EmailMessage]变量
  • 修改ConvertDataTableToHTML方法,在返回的HTML内容最开头补充HTML文档声明,示例如下:
public static string ConvertDataTableToHTML(DataTable dt)
{
    // 开头补充HTML文档声明,辅助部分邮件客户端识别格式
    string html = "<!DOCTYPE html><html><body>";
    html += "<table border ='1'>";
    // 原有生成表格的逻辑全部保留
    for (int i = 0; i < dt.Columns.Count; i++)
        html += "<th>" + dt.Columns[i].ColumnName + "</th>";
    html += "</tr>";
    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></body></html>";
    return html;
}

该方案对不同邮件客户端的兼容性较差,容易出现识别失败的情况,优先推荐使用方案1。

内容的提问来源于stack exchange,提问作者user4912134

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 07:24:07