gpt4 book ai didi

sql-server - 通过SQL Reporting Services发送带有PDF的多个附件报告的电子邮件

转载 作者:行者123 更新时间:2023-12-03 17:56:12 26 4
gpt4 key购买 nike

我正在使用SQL 2008 Reporting Services。从应用程序设置参数后,我将在浏览器中打开报告。我从代码创建报表的订阅,该订阅将电子邮件和PDF附件一起发送。

但是我想从代码创建多个报告的订阅,并且一封电子邮件应与多个PDF附件一起发送给客户端。 (注意:无需针对每个订阅发送电子邮件)
我尝试过自己,但找不到任何解决方案。您能否指导我如何在一封邮件中发送包含多个PDF附件报告数据的电子邮件。

还是通过其他方法以电子邮件形式发送多个PDF格式的报告来实现这一目标?

下面给出了我用于创建订阅的代码。它将发送电子邮件以及附件。但是正如我上面提到的,我希望在一封电子邮件中包含多个附件。

RSServiceReference05.ReportingService2005SoapClient rs = new RSServiceReference05.ReportingService2005SoapClient();

rs.ClientCredentials.Windows.AllowedImpersonationLevel = new System.Security.Principal.TokenImpersonationLevel();

string batchID = string.Empty;
RSServiceReference05.ServerInfoHeader infoHeader = rs.CreateBatch(out batchID);

RSServiceReference05.BatchHeader bh = new RSServiceReference05.BatchHeader()
{
BatchID = batchID,
AnyAttr = infoHeader.AnyAttr
};

string desc = "Report is attached.";
string eventType = "TimedSubscription";
DateTime dt = DateTime.Now;
string scheduleXml = "<ScheduleDefinition xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"><StartDateTime xmlns=\"http://schemas.microsoft.com/sqlserver/2006/03/15/reporting/reportingservices\">" + dt.AddMinutes(3).ToString("dd/MMM/yyyy HH:mm:ss")+"+05:00</StartDateTime></ScheduleDefinition>";


RSServiceReference05.ParameterValue[] extensionParams = new RSServiceReference05.ParameterValue[7];
extensionParams[0] = new RSServiceReference05.ParameterValue();
extensionParams[0].Name = "TO";
extensionParams[0].Value = txtEmailTo.Text;
extensionParams[1] = new RSServiceReference05.ParameterValue();
extensionParams[1].Name = "IncludeReport";
extensionParams[1].Value = "True";
extensionParams[2] = new RSServiceReference05.ParameterValue();
extensionParams[2].Name = "RenderFormat";
extensionParams[2].Value = "PDF";
extensionParams[3] = new RSServiceReference05.ParameterValue();
extensionParams[3].Name = "Subject";
extensionParams[3].Value = txtSubject.Text;
extensionParams[4] = new RSServiceReference05.ParameterValue();
extensionParams[4].Name = "Comment";
extensionParams[4].Value = txtMessage.Text;
extensionParams[5] = new RSServiceReference05.ParameterValue();
extensionParams[5].Name = "IncludeLink";
extensionParams[5].Value = "False";
extensionParams[6] = new RSServiceReference05.ParameterValue();
extensionParams[6].Name = "Priority";
extensionParams[6].Value = "NORMAL";


string matchData = scheduleXml;

RSServiceReference05.ExtensionSettings extSettings = new RSServiceReference05.ExtensionSettings();

extSettings.ParameterValues = extensionParams;
extSettings.Extension = "Report Server Email";
string sub = "";
RSServiceReference05.ServerInfoHeader SubID =
rs.CreateSubscription(bh, "/MyReports/MyTestReport", extSettings, desc, eventType, matchData, parameters, out sub);
RSServiceReference05.ServerInfoHeader EventID = rs.FireEvent(bh, "TimedSubscription", sub);
rs.ExecuteBatch(bh);

最佳答案

首先创建一个主报告-这将是
您通过电子邮件发送给用户的订阅。
正常在报表服务器上创建所有必需的报表。
将tablix添加到主报告
根据需要在每个文本框中填充每个报告的标题,
例如MyTestReport1,MyTestReport2等。
对于主报表上的每个报表标题,右键单击选择
文本框属性-操作-转到URL。直接输入网址到
报表存储在报表服务器上的位置(或者您可以使用
表达式框,如果您需要的不仅仅是打开复杂的内容
那个报告)。




现在,当您的订阅运行并且您的主报告通过电子邮件发送给用户时,他们可以在打开报告时选择所需的报告以及所需格式的下载(例如PDF,Excel,CSV)。

另外,您可以通过将以下内容添加到URL来配置超链接,以提示用户单击时保存附件:

对于PDF

&rs:Format=PDF


或用于Excel

&rs:Format=Excel


我认为这里的替代方案是您要实现的目标,并且效果很好。

关于sql-server - 通过SQL Reporting Services发送带有PDF的多个附件报告的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6881147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com