/*Email SSRS report using CRM SDK.. -Add web reference in your project and set web reference url of your web service of ssrs e.g. http://10.1.4.83/ReportServer/ReportExecution2005.asmx -Add these references in your code editor. */ using Microsoft.Crm.Sdk; using Microsoft.Crm.SdkTypeProxy; using Microsoft.Crm.Sdk.Query; using MCS.Crm.emailssrs.ReportExecution; //MCS.Crm.emailssrs is project name using Microsoft.Win32; using System.Net; Write a function and add code below. public void SendSSRSReport() { string reportServiceUrl = "http://10.1.4.83/ReportServer/ReportExecution2005.asmx"; // Create the Report Service Url from the registry RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\MSCRM", false); if (key != null) { reportServiceUrl = (string)key.GetValue("SQLRSServerURL") + @"/ReportExecution2005.asmx"; } // Report parameter Name and Value fields are strings. ReportExecution.ParameterValue[] parameters = new ParameterValue[3]; parameters[0] = new ParameterValue(); parameters[0].Label = "RegistrationNumber"; parameters[0].Name = "RegistrationNumber"; parameters[0].Value = mcs_RegistrationNumber; parameters[1] = new ParameterValue(); parameters[1].Label = "FromDate"; parameters[1].Name = "FromDate"; parameters[1].Value = _fdate.ToShortDateString(); parameters[2] = new ParameterValue(); parameters[2].Label = "ToDate"; parameters[2].Name = "ToDate"; parameters[2].Value = _tdate.ToShortDateString(); string reportName = "myreport"; // Specify what type of report you want to create HTML,PDF, CVS, Excel, Word, XML, MHTML, Image string reportFormat = "PDF"; // Specify the device information to control the output of your report. //For device information See http://msdn2.microsoft.com/en-us/library/ms155397.aspx string deviceInformation = "2402400"; // Generate a report in a format for a CRM annotation or email attachment byte[] generatedReport = GenerateSRSbytes(reportName, parameters, reportFormat, deviceInformation, reportServiceUrl, null, null, null); string _str = Convert.ToBase64String(generatedReport); string FileName = "myreport.pdf"; string Subject = "Email SSRS Report "; mcsCrmService= new CrmService(); CrmAuthenticationToken token = new CrmAuthenticationToken(); token.AuthenticationType = 0; token.OrganizationName = "TestOrg"; mcsCrmService.Url ="http://10.1.4.83:5555/mscrmservices/2007/crmservice.asmx"; mcsCrmService.PreAuthenticate = true; mcsCrmService.CrmAuthenticationTokenValue = token; mcsCrmService.Credentials=System.Net.CredentialCache.DefaultCredentials; Guid _to = new Guid("e1b67b12-1e8a-4bb2-9c86-fdb8f75dda4d");//To email address GUID Guid _from = new Guid("a1e9c6a2-73e5-4117-a8c9-c15b89a92203");//From email address GUID // Create an activity party for the email activityparty party = new activityparty(); party.partyid = new Lookup(); party.partyid.type = EntityName.systemuser.ToString(); party.partyid.Value = _from; activityparty party2 = new activityparty(); party2.partyid = new Lookup(); party2.partyid.type = EntityName.account.ToString(); party2.partyid.Value = _to; //Create email template in CRM and get GUID of that template from Internet Explorer: Guid _templateid = new Guid("a783eea1-222b-461c-9c1f-e8185fd5504d");//template GUID InstantiateTemplateRequest _insTemplate = new InstantiateTemplateRequest();//Initialize template object. _insTemplate.TemplateId=_templateid; _insTemplate.ObjectId = (Guid)party2.partyid.Value; _insTemplate.ObjectType=party2.partyid.type; InstantiateTemplateResponse _tempResponse=(InstantiateTemplateResponse)mcsCrmService.Execute(_insTemplate); // Create an email message. email email = (email)_tempResponse.BusinessEntityCollection.BusinessEntities[0]; // Set email properties email.from = new activityparty[] { party }; email.to = new activityparty[] { party2 }; email.regardingobjectid = party2.partyid; email.subject = Subject ; email.directioncode = new CrmBoolean(true); Guid emailID = mcsCrmService.Create(email); attachment.activityid = new Lookup(); attachment.activityid.Value = emailID; attachment.activityid.type = EntityName.email.ToString(); attachment.filename = FileName; attachment.attachmentnumber = new CrmNumber(); attachment.body = _str; attachment.mimetype = @"application/pdf"; // Create the Attachment in CRM. Guid attachmentId = mcsCrmService.Create(attachment); //Send Email. SendEmailRequest _sendEmailReq = new SendEmailRequest(); _sendEmailReq.EmailId = emailID; _sendEmailReq.IssueSend = true; _sendEmailReq.TrackingToken = ""; mcsCrmService.Execute(_sendEmailReq); } public byte[] GenerateSRSbytes(string reportPath, ParameterValue[] parameters, string outputFormat, string deviceInformation, string ReportServiceUrl, string userName, string passWord, string domainName) { string encoding; string mimeType; string extension; string[] streamIDs; string SessionId; string historyID = null; Warning[] warnings; // By default the Report will run with the permissions of the AD authenticated User. ReportExecutionService rs = new ReportExecutionService(); rs.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; rs.Url = ReportServiceUrl; // Impersonate credentials if they are specified. if (userName != null && passWord != null) { if (domainName == null) { rs.Credentials = new NetworkCredential(userName, passWord); } else { rs.Credentials = new NetworkCredential(userName, passWord, domainName); } } // Set timeout in seconds of the report takes a long time. rs.Timeout = 600000; ExecutionHeader execHeader = new ExecutionHeader(); rs.ExecutionHeaderValue = execHeader; ExecutionInfo execInfo = new ExecutionInfo(); execInfo = rs.LoadReport(reportPath, historyID); rs.SetExecutionParameters(parameters, "en-us"); SessionId = rs.ExecutionHeaderValue.ExecutionID; // Render Report return rs.Render(outputFormat, deviceInformation, out extension, out mimeType, out encoding, out warnings, out streamIDs); }
Search
Email SSRS report using CRM SDK
I have SSRS report on my report server and i need to email that report from source code in .net.