我可以发送 s-s-rS 自定义订阅电子邮件吗?

Posted

技术标签:

【中文标题】我可以发送 s-s-rS 自定义订阅电子邮件吗?【英文标题】:Can I send s-s-rS custom subscription e-mails? 【发布时间】:2013-12-18 06:22:50 【问题描述】:

我需要向人员列表发送一些包含 s-s-rS 报告的电子邮件,以表示他们在某个日期之前剩余的工作量。 我想做的是向列表中的每个人发送反映他进度的自定义报告,所以我的问题是:我可以向列表中的人发送不同的报告(比如发送它的电子邮件地址作为参数到报告),还是只能将同一份报告发送给列表中的所有人?

谢谢!

【问题讨论】:

【参考方案1】:

如果您没有企业(使用@StephLocke 提到的数据驱动订阅),您可以使用s-s-rS web service 以编程方式生成 s-s-rS 订阅。

您的代码看起来像这样(SubscriptionRequest 是我使用的自定义类,它的属性应该很直观):

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);
               
  

更多示例can be found here。

【讨论】:

标准许可环境的绝佳替代品【参考方案2】:

是的,您可以使用数据驱动订阅来执行此操作。不幸的是,这并非适用于所有版本(2008 年以上,我相信仅限企业版),因此您可能无法使用此功能。

还有更多详情:http://technet.microsoft.com/en-us/library/ms159150.aspx

【讨论】:

开箱即用,正确答案(它应该工作的方式)。

以上是关于我可以发送 s-s-rS 自定义订阅电子邮件吗?的主要内容,如果未能解决你的问题,请参考以下文章

s-s-rS 2008 报告订阅电子邮件随机接收传递扩展加载错误

s-s-rS 电子邮件订阅配置

s-s-rS 中的自定义定时订阅计划

更改 s-s-rS 发送的电子邮件中的 URL

s-s-rS 订阅电子邮件组(分发列表)不起作用

如何在 s-s-rS 订阅的主题行中包含报告参数?