2010-05-07 75 views
1

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

有没有人这样做?我几乎可以得到它(我认为),但我似乎有一个编码问题。电子邮件显示为某种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”;字符集= “utf-8” 内容传输编码:的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; 
+0

检查SQL Server版本 - 您可以在订阅中使用电子邮件机制,而不是自己编写电子邮件。 – 2010-05-07 17:57:32

+0

我需要报告成为电子邮件的主体。据我所知,订阅无法完成。 – Mozy 2010-05-07 21:13:56

+0

只是稍微更新... 我的问题是MHTML(M为MIME)我需要一种方法将MHTML转换为HTML或强制电子邮件来处理MHTML。 – Mozy 2010-05-07 21:19:15

回答

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小马在上面的评论中建议。
  4. 如在this question中讨论的那样将MHTML内联。你可能会想要购买一个图书馆来帮助解决这个问题。
+0

你的回答指向了我正确的方向。原来,我需要使用ReportExecution2005.asmx,而不是使用简单的客户端来获取HTML参数。 – Mozy 2010-05-11 00:09:00

1

我喜欢Nate的答案,并且能够使用上面第4点中链接的建议获得HTML 4.0的工作,所以在这里它可以作为任何人在这里漫游的捷径。尽管如此,我使用SMTP发送电子邮件,因为图像无法链接回我的SSRS服务器,因此图像被丢弃。

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

Credit属于上面引用的Voot。

相关问题