views:

277

answers:

1

Hi all,

What I want to do is render a SSRS 2008 report as HTML (actually MHTML) and send that as the body in an email.

Has anyone done this? I've almost got it (I think) but I seem to have a encoding problem. The email shows up as what looks like some sort of base64 encoding.

Like this: MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_01C35DB7.4B204430" X-MSSQLRS-ProducerVersion: V10.0.2531.0 This is a multi-part message in MIME format. ------=_NextPart_01C35DB7.4B204430 Content-ID: Content-Disposition: inline; filename="FollowUpNotification" Content-Type: text/html; name="FollowUpNotification"; charset="utf-8" Content-Transfer-Encoding: base64 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNp...

Any ideas on what I'm missing?

Here is a code snippet:

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;
A: 

System.Net.Mail doesn't support sending MHTML email where the MHTML appears as the message (see this page where someone is attempting to send MHTML as email).

The reason you are seeing the code is that messageBody is expecting HTML, while the code is feeding it an MHTML document. The string is not automatically unencoded.

Here are some options:

  1. Change the format parameter from MHTML to HTML3.2 or HTML4.0. SQL Reporting Services will then give you RAW HTML.
  2. Send the MHTML as an attachment rather than inline.
  3. Use SSRS's built in email Subscriptions feature as OMG Ponies suggested in the above comment.
  4. Put the MHTML inline as discussed in this question. You'll likely want to buy a library to help with this.
Nate
You're answer pointed me in the right direction. Turns out I needed to use ReportExecution2005.asmx instead of the simple client I was using to get the HTML parameters to work.
Mozy