Email 我可以发送SSRS自定义订阅电子邮件吗?

Email 我可以发送SSRS自定义订阅电子邮件吗?,email,reporting-services,subscription,Email,Reporting Services,Subscription,我需要发送一些包含SSRS报告的电子邮件给一个人员列表,表示他们在某个日期之前剩余的工作项的数量。 我想做的是向列表中的每个人发送反映其进度的定制报告,因此我的问题是:我可以向列表中的人发送不同的报告(例如将其电子邮件地址作为报告的参数发送),还是只能向列表中的所有人发送相同的报告 谢谢 是的,您可以使用数据驱动订阅来执行此操作。不幸的是,这不是每个版本都可以使用的(2008+,我相信只有企业版),所以您可能无法使用此功能 有更多可用的详细信息:是,您可以使用数据驱动订阅来执行此操作。不幸的是,

我需要发送一些包含SSRS报告的电子邮件给一个人员列表,表示他们在某个日期之前剩余的工作项的数量。 我想做的是向列表中的每个人发送反映其进度的定制报告,因此我的问题是:我可以向列表中的人发送不同的报告(例如将其电子邮件地址作为报告的参数发送),还是只能向列表中的所有人发送相同的报告


谢谢

是的,您可以使用数据驱动订阅来执行此操作。不幸的是,这不是每个版本都可以使用的(2008+,我相信只有企业版),所以您可能无法使用此功能


有更多可用的详细信息:

是,您可以使用数据驱动订阅来执行此操作。不幸的是,这不是每个版本都可以使用的(2008+,我相信只有企业版),所以您可能无法使用此功能


有更多可用的详细信息:

是,您可以使用数据驱动订阅来执行此操作。不幸的是,这不是每个版本都可以使用的(2008+,我相信只有企业版),所以您可能无法使用此功能


有更多可用的详细信息:

是,您可以使用数据驱动订阅来执行此操作。不幸的是,这不是每个版本都可以使用的(2008+,我相信只有企业版),所以您可能无法使用此功能


还有更多可用的详细信息:

如果您没有enterprise(要利用@StephLocke提到的数据驱动订阅),您可以使用以编程方式生成SSRS订阅

您的代码如下所示(SubscriptionRequest是我使用的自定义类,其属性应该是直观的):

静态void生成订阅()
{
if(SubscriptionRequests.Count<1)返回;
NetworkCredential credentials=新的网络凭据(“用户”、“通过”);
reports.ReportingService2005 rs=新的reports.ReportingService2005();
rs.证书=证书;
DateTime topDatetime=DateTime.Now;
topDatetime=topDatetime.AddMinutes(2);
foreach(SubscriptionRequests中的SubscriptionRequest x)
{
reports.ExtensionSettings ExtensionSettings=新的reports.ExtensionSettings();
List extParameters=new List();
列表参数=新列表();
string description=“电子邮件:”;
string eventType=“TimedSubscription”;
extensionSettings.Extension=“报表服务器电子邮件”;
字符串scheduleXml=“”;
scheduleXml+=topDatetime.ToSortDateString()+“”+topDatetime.ToSortTimeString();
scheduleXml+=“”;
parameters.Add(new reports.ParameterValue(){Name=“abc”,Value=x.id});
Add(newreports.ParameterValue(){Name=“RenderFormat”,Value=x.RenderFormat});
extParameters.Add(newreports.ParameterValue(){Name=“TO”,Value=x.email});
extParameters.Add(new reports.ParameterValue(){Name=“ReplyTo”,Value=x.ReplyTo});
extParameters.Add(new reports.ParameterValue(){Name=“IncludeReport”,Value=“True”});
添加(newreports.ParameterValue(){Name=“Subject”,Value=“Subject-”+”(“+x.id.ToString()+”)));
Add(newreports.ParameterValue(){Name=“Comment”,Value=x.body});
extensionSettings.ParameterValues=extParameters.ToArray();
description+=topDatetime.ToSortDateString()+“”+topDatetime.ToSortTimeString();
描述+=“(“+x.a+”-“+x.b+”-“+x.c+”)”;
字符串_reportName=“/report”;
rs.CreateSubscription(_reportName,extensionSettings,description,eventType,scheduleXml,parameters.ToArray());
topDatetime=topDatetime.AddSeconds(30);
}           
}  

更多示例。

如果您没有enterprise(要利用@StephLocke提到的数据驱动订阅),您可以使用以编程方式生成SSRS订阅

您的代码如下所示(SubscriptionRequest是我使用的自定义类,其属性应该是直观的):

静态void生成订阅()
{
if(SubscriptionRequests.Count<1)返回;
NetworkCredential credentials=新的网络凭据(“用户”、“通过”);
reports.ReportingService2005 rs=新的reports.ReportingService2005();
rs.证书=证书;
DateTime topDatetime=DateTime.Now;
topDatetime=topDatetime.AddMinutes(2);
foreach(SubscriptionRequests中的SubscriptionRequest x)
{
reports.ExtensionSettings ExtensionSettings=新的reports.ExtensionSettings();
List extParameters=new List();
列表参数=新列表();
string description=“电子邮件:”;
string eventType=“TimedSubscription”;
extensionSettings.Extension=“报表服务器电子邮件”;
字符串scheduleXml=“”;
scheduleXml+=topDatetime.ToSortDateString()+“”+topDatetime.ToSortTimeString();
scheduleXml+=“”;
parameters.Add(new reports.ParameterValue(){Name=“abc”,Value=x.id});
Add(newreports.ParameterValue(){Name=“RenderFormat”,Value=x.RenderFormat});
extParameters.Add(newreports.ParameterValue(){Name=“TO”,Value=x.email});
extParameters.Add(new reports.ParameterValue(){Name=“ReplyTo”,Value=x.ReplyTo});
extParameters.Add(new reports.ParameterValue(){Name=“IncludeReport”,Value=“True”});
添加(newreports.ParameterValue(){Name=“Subject”,Value=“Subject-”+”(“+x.id.ToString()+”)));
Add(newreports.ParameterValue(){Name=“Comment”,Value=x.body});
extensionSettings.ParameterValues=extParameters.ToArray();
description+=topDatetime.ToSortDateString()+“”+topDatetime.ToSortTimeString();
描述+=”(“+x.a+”-“+x.b+
static void generateSubscription()
{
    if (SubscriptionRequests.Count < 1) return;

    NetworkCredential credentials = new NetworkCredential("user", "pass");
    reports.ReportingService2005 rs = new reports.ReportingService2005();
    rs.Credentials = credentials;
    DateTime topDatetime = DateTime.Now;
    topDatetime = topDatetime.AddMinutes(2);

    foreach (SubscriptionRequest x in SubscriptionRequests)
    {
        reports.ExtensionSettings extensionSettings = new reports.ExtensionSettings();
        List<reports.ParameterValue> extParameters = new List<reports.ParameterValue>();
        List<reports.ParameterValue> parameters = new List<reports.ParameterValue>();
        string description = "Email: ";
        string eventType = "TimedSubscription";
        extensionSettings.Extension = "Report Server Email";

        string scheduleXml = "<ScheduleDefinition><StartDateTime>";
        scheduleXml += topDatetime.ToShortDateString() + " " + topDatetime.ToShortTimeString();
        scheduleXml += "</StartDateTime></ScheduleDefinition>";

        parameters.Add(new reports.ParameterValue() { Name = "abc", Value = x.id });


        extParameters.Add(new reports.ParameterValue() { Name = "RenderFormat", Value = x.renderFormat });
        extParameters.Add(new reports.ParameterValue() { Name = "TO", Value = x.email });
        extParameters.Add(new reports.ParameterValue() { Name = "ReplyTo", Value = x.replyTo });
        extParameters.Add(new reports.ParameterValue() { Name = "IncludeReport", Value = "True" });
        extParameters.Add(new reports.ParameterValue() { Name = "Subject", Value = "subject - " + " (" + x.id.ToString() + ")" });

        extParameters.Add(new reports.ParameterValue() { Name = "Comment", Value = x.body });
        extensionSettings.ParameterValues = extParameters.ToArray();

        description += topDatetime.ToShortDateString() + " " + topDatetime.ToShortTimeString();
        description += " (" + x.a + " - " + x.b + " - " + x.c + ")";
        string _reportName = "/report";
        rs.CreateSubscription(_reportName, extensionSettings, description, eventType, scheduleXml, parameters.ToArray());
        topDatetime = topDatetime.AddSeconds(30);
    }           
}