I have made use of the following article to create a sample for you.
What I simply did is added a button to the above code to send email and on Button click I am generating PDF and sending email
Namespaces
1
2
3
4
5
6
7
| using System.Data; using System.Configuration; using System.Data.SqlClient; using CrystalDecisions.CrystalReports.Engine; using System.Net.Mail; using System.Net; using CrystalDecisions.Shared; |
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
| protected void Page_Load( object sender, EventArgs e) { if (!IsPostBack) { ReportDocument crystalReport = new ReportDocument(); crystalReport.Load(Server.MapPath( "~/CustomerReport.rpt" )); Customers dsCustomers = GetData( "select * from customers" ); crystalReport.SetDataSource(dsCustomers); CrystalReportViewer1.ReportSource = crystalReport; } } private Customers GetData( string query) { string conString = ConfigurationManager.ConnectionStrings[ "constr" ].ConnectionString; SqlCommand cmd = new SqlCommand(query); using (SqlConnection con = new SqlConnection(conString)) { using (SqlDataAdapter sda = new SqlDataAdapter()) { cmd.Connection = con; sda.SelectCommand = cmd; using (Customers dsCustomers = new Customers()) { sda.Fill(dsCustomers, "DataTable1" ); return dsCustomers; } } } } protected void ExportAndEmail( object sender, EventArgs e) { ReportDocument crystalReport = new ReportDocument(); crystalReport.Load(Server.MapPath( "~/CustomerReport.rpt" )); Customers dsCustomers = GetData( "select * from customers" ); crystalReport.SetDataSource(dsCustomers); using (MailMessage mm = new MailMessage( "sender@gmail.com" , "receiver@gmail.com" )) { mm.Subject = "Crystal Report PDF example" ; mm.Body = "Crystal Report PDF example" ; mm.Attachments.Add( new Attachment(crystalReport.ExportToStream(ExportFormatType.PortableDocFormat), "Report.pdf" )); mm.IsBodyHtml = true ; SmtpClient smtp = new SmtpClient(); smtp.Host = "smtp.gmail.com" ; NetworkCredential credential = new NetworkCredential(); credential.UserName = "sender@gmail.com" ; credential.Password = "xxxxx" ; smtp.UseDefaultCredentials = true ; smtp.Credentials = credential; smtp.Port = 587; smtp.EnableSsl = true ; smtp.Send(mm); } } |
No comments:
Post a Comment