【问题标题】:SSRS 2008 - Sending report as emailSSRS 2008 - 以电子邮件形式发送报告
【发布时间】:2010-05-07 17:52:41
【问题描述】:

我想要做的是将 SSRS 2008 报告呈现为 HTML(实际上是 MHTML)并将其作为正文在电子邮件中发送。

有人做过吗?我几乎得到它(我想),但我似乎有一个编码问题。电子邮件显示为某种 base64 编码。

像这样:MIME-Version: 1.0 Content-Type: multipart/related; 边界="----=_NextPart_01C35DB7.4B204430" X-MSSQLRS-ProducerVersion: V10.0.2531.0 这是 MIME 格式的多部分消息。 ------=_NextPart_01C35DB7.4B204430 内容 ID:内容处置:内联; filename="FollowUpNotification" 内容类型:文本/html; name="FollowUpNotification"; charset="utf-8" 内容传输编码:base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp...

关于我缺少什么的任何想法?

这是一个代码sn-p:

myMail.BodyEncoding = System.Text.Encoding.UTF8;

myMail.IsBodyHtml = true;

WebClient client = new WebClient();

System.Net.NetworkCredential repAuthenticationInfo = 
    new System.Net.NetworkCredential(@"username", @"password");
client.Credentials = repAuthenticationInfo;

client.Encoding = System.Text.Encoding.UTF8;

string messageBody = client.DownloadString(
    "http://<<reportserver>>&rs%3aFormat=MHTML&Parameter=" + Parameter);

myMail.Body = messageBody;

【问题讨论】:

  • 检查 SQL Server 版本 - 您可以在订阅中使用电子邮件机制,而不是自己编写电子邮件。
  • 我需要将报告作为电子邮件的正文。据我所知,订阅无法做到这一点。
  • 只是一点点更新...我的问题是 MHTML(M 代表 MIME)我需要一种将 MHTML 转换为 HTML 或强制电子邮件处理 MHTML 的方法。

标签: reporting-services ssrs-2008


【解决方案1】:

System.Net.Mail 不支持发送 MHTML 电子邮件,其中 MHTML 显示为消息(请参阅此页面,其中某人是 attempting to send MHTML as email)。

您看到代码的原因是 messageBody 需要 HTML,而代码正在为其提供 MHTML 文档。字符串不会自动取消编码。

这里有一些选项:

  1. 将格式参数从 MHTML 更改为 HTML3.2 或 HTML4.0。然后 SQL Reporting Services 将为您提供 RAW HTML。
  2. 将 MHTML 作为附件而不是内联发送。
  3. 使用 SSRS 的内置电子邮件订阅功能,如上述评论中建议的 OMG Ponies。
  4. 按照this question 中的讨论将MHTML 内联。您可能需要购买一个库来帮助解决此问题。

【讨论】:

  • 您的回答为我指明了正确的方向。结果我需要使用 ReportExecution2005.asmx 而不是我用来让 HTML 参数工作的简单客户端。
【解决方案2】:

我喜欢 Nate 的回答,并且我能够使用上面第 4 点中的链接中的以下建议使事情适用于 HTML 4.0,所以在这里它是任何在这里徘徊的人的捷径。不过,请注意,我使用 SMTP 发送电子邮件并且图像被丢弃,因为它们无法链接回我的 SSRS 服务器。

我没有将 .mht 内容作为电子邮件正文发送的解决方案,但我确实知道如何将 SQL Server 2005 报告导出为普通的旧 HTML 格式。我最初也被 Render 方法的“格式”参数的糟糕文档所抛弃。事实证明,如果你传入“HTML4.0”,SSRS 会为你生成 HTML。

信用属于上面引用的 Voot。

【讨论】:

    猜你喜欢
    • 2019-04-17
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多