我可以发送 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 自定义订阅电子邮件吗?的主要内容,如果未能解决你的问题,请参考以下文章