• I was able to hack it all together with C#.

    The following assumes that you know a little bit about using Visual Studio and programming in C#.

    1) Create a subscription in SSRS that saves the report locally to the server as HTML 4.0

    2) Create a new C# project using Visual Studio Express 2010 or 2012

    3) Install NuGet package manager and then get PreMailer from http://nuget.org/packages/PreMailer.Net/1.1.2

    4) You'll see in the code that I had to add some Regex.Replace statements to the method in order to clean up and reduce the size of my report. You might not need these because your report is small.

    5) Schedule a task that runs the .exe from the complied C# code.

    It's not pretty...but it works... Good Luck!

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Threading.Tasks;

    using System.Windows.Forms;

    using System.Net.Mail;

    using System.Net;

    using System.Text.RegularExpressions;

    using System.IO;

    namespace Report

    {

    static class Program

    {

    /// <summary>

    /// The main entry point for the application.

    /// </summary>

    [STAThread]

    static void Main()

    {

    var content = File.ReadAllText(@"D:\Report\Report.html");

    var pm = new PreMailer.Net.PreMailer();

    string premailedOutput = pm.MoveCssInline(content, false);

    var content2 = Regex.Replace(premailedOutput, @"<style.*</style>", @"", RegexOptions.Singleline);

    content2 = Regex.Replace(content2, @"<!\[CDATA\[.*?\]\]>", @"", RegexOptions.Singleline);

    content2 = content2.Replace("border-bottom: 1pt solid black;border-left: 1pt solid black;border-right: 1pt solid black;border-top: 1pt solid black", "border: 1pt solid black");

    content2 = content2.Replace("padding-bottom: 2pt;padding-left: 2pt;padding-right: 2pt;padding-top: 2pt", "padding: 2pt");

    content2 = content2.Replace("text-decoration: none;unicode-bidi: normal;vertical-align: middle;white-space: pre-wrap;word-wrap: break-word;writing-mode: lr-tb;", "");

    List<string> emailList = new List<string>()

    {

    "emailaddr1@domain.com", "emailaddr2@domain.com", "emailaddr@domain.com"

    };

    var email = SendMail("noreply@domain.com", emailList, "Daily Report", content2, true, null);

    }

    public static bool SendMail(string from, List<string> to, string subject, string body, bool bodyIsHtml, Dictionary<string, Stream> attachments)

    {

    try

    {

    var message = new System.Net.Mail.MailMessage();

    message.From = new System.Net.Mail.MailAddress(from);

    to.ForEach(new Action<string>(message.To.Add));

    message.Subject = subject;

    if (bodyIsHtml)

    message.AlternateViews.Add(System.Net.Mail.AlternateView.CreateAlternateViewFromString(body, new System.Net.Mime.ContentType("text/html")));

    else

    message.Body = body;

    message.Body = Regex.Replace(message.Body, "[^\r]", "\r");

    if (attachments != null)

    {

    foreach (var attachment in attachments)

    {

    message.Attachments.Add(new System.Net.Mail.Attachment(attachment.Value, attachment.Key));

    }

    }

    var smtp = new System.Net.Mail.SmtpClient("someOpenMailRelay.com", 25);

    smtp.Credentials = new NetworkCredential("username", "password");

    smtp.Send(message);

    }

    catch (Exception ex)

    {

    var toString = ex.ToString();

    return false;

    }

    return true;

    }

    }

    }