SSRS 2008 - 以电子邮件形式发送报告

时间:2010-05-07 17:52:42

标签: reporting-services ssrs-2008

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

有人这样做过吗?我差不多了(我想),但我似乎有编码问题。电子邮件显示为看​​起来像某种base64编码。

像这样:MIME-Version:1.0 Content-Type:multipart / related; boundary =“---- = _ NextPart_01C35DB7.4B204430”X-MSSQLRS-ProducerVersion: V10.0.2531.0这是MIME格式的多部分消息。 ------ = _ NextPart_01C35DB7.4B204430 Content-ID:Content-Disposition:inline; filename =“FollowUpNotification”Content-Type:text / html; NAME = “FollowUpNotification”; charset =“utf-8”Content-Transfer-Encoding:base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp ...

关于我缺少的任何想法?

以下是代码段:

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;

2 个答案:

答案 0 :(得分:3)

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内联。您可能想购买一个图书馆来帮助解决这个问题。

答案 1 :(得分:1)

我喜欢Nate的回答,并且我能够使用上面第4点中的链接中的建议为HTML 4.0工作,所以这里是对任何在这里游荡的人的捷径。但请注意,我使用SMTP发送电子邮件并删除图像,因为它们无法链接回我的SSRS服务器。

  

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

Credit属于上面引用的Voot。