2010-05-07 76 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。

相關問題