• <menu id="w2i4a"></menu>
  • logo FastReport.Net教程2019

    文檔首頁>>FastReport.Net教程2019>>FastReport教程:如何在WinForms應(yīng)用程序中從數(shù)據(jù)庫郵件發(fā)送報表

    FastReport教程:如何在WinForms應(yīng)用程序中從數(shù)據(jù)庫郵件發(fā)送報表


    下載FastReport.Net最新版本

    報表是工作流程和電子報表(電子工作流程)不可或缺的一部分。分發(fā)電子報表的主要機制之一是電子郵件。也許,所有現(xiàn)代報表生成器都有一個內(nèi)置的郵件客戶端,可以直接從程序發(fā)送報表。

    FastReport.Net也不例外。您可以在預覽模式下發(fā)送報表,也可以直接從用戶應(yīng)用程序的代碼發(fā)送報表。如果您向單個收件人發(fā)送報表,這很方便。雖然可以添加多個收件人,但并不總是合適。例如,當您想要制作一個包含用戶名稱的簡報時:“親愛的,Ivan Ivanovich ......”。因此,我們考慮如何向多個收件人發(fā)送報表的示例,其地址和名稱取自數(shù)據(jù)庫。首先,在其中創(chuàng)建一個數(shù)據(jù)庫和一個表。例如,以mdb格式訪問數(shù)據(jù)庫:

    FastReport

    創(chuàng)建一個WinForms應(yīng)用程序。將電子郵件設(shè)置的兩個按鈕和文本字段添加到表單:

    FastReport

    第一個按鈕將按名稱發(fā)送報表,第二個按鈕將報表發(fā)送到地址列表。您將從代碼中了解其工作原理。 每個字段都有一個默認值; 如果您愿意,可以輸入不同的值。

    使用向?qū)?chuàng)建應(yīng)用程序數(shù)據(jù)源:

    FastReport

    接下來,我們將連接字符串配置到數(shù)據(jù)庫并選擇表:

    FastReport

    將FastReport庫的鏈接添加到項目中。我們還需要一個包含報告模板的文件,我們將發(fā)送該文件。將其添加到項目中。例如,我們將使用Demo文件夾中的報告text.frx。

    現(xiàn)在為Direct email按鈕事件創(chuàng)建一個處理程序:

    using System;
    using System.Data;
    using System.Windows.Forms;
    using FastReport;
    using FastReport.Utils;
    using FastReport.Export.Pdf;
    using FastReport.Export.Email;
     
     private void SendReport_Click(object sender, EventArgs e)
     {
     Config.ReportSettings.ShowProgress = false; //Disable progress window
     
     Report report1 = new Report(); //Create new report object
     report1.Load(Environment.CurrentDirectory + "/text.frx"); //Load report
     report1.Prepare(); //Prepare report
     PDFExport pdf = new PDFExport(); //Cteate PDF export
     EmailExport email = new EmailExport(); //Create Email export
     EmailsDataSet ds = new EmailsDataSet();
     EmailsDataSetTableAdapters.CustomerTableAdapter adapter = new EmailsDataSetTableAdapters.CustomerTableAdapter();
     adapter.Fill(ds.Customer);
     DataTable table = ds.Customer;
     
     foreach (DataRow row in table.Rows)
     {
     SendMessage(report1, pdf, email, row["Email"].ToString(), row["Name"].ToString());
     }
     }

    這里我們首先創(chuàng)建報表對象,將模板加載到其中,創(chuàng)建導出到PDF和電子郵件。該報告將附在PDF格式的信件中。

    接下來,我們創(chuàng)建一個數(shù)據(jù)源,用數(shù)據(jù)填充表。我們查看表格條目,并為每個條目發(fā)送一封信。當然,如果你有一個龐大的郵件列表,這種方法會很慢。但是你可以在信件的文本中插入客戶的名字。

    正如您所注意到的,我們已經(jīng)將這封信發(fā)送到一個單獨的方法 - SendMessage:

    public void SendMessage(Report report, PDFExport pdf, EmailExport email, string recipient, string custName)
     {
     email.Account.Address = AddressFromTxt.Text;
     email.Account.Name = SenderNameTxt.Text;
     email.Account.Host = HostTxt.Text;
     email.Account.Port = Convert.ToInt16(PortTxt.Text);
     email.Account.UserName = UserNameTxt.Text;
     email.Account.Password = PasswordTxt.Text;
     email.Account.MessageTemplate = "Test";
     email.Account.EnableSSL = true;
     email.Address = recipient;
     email.Subject = MailSubjectTxt.Text;
     email.MessageBody = custName is null? MessageTxt.Text : string.Format("Dear, {0}! {1}", custName, MessageTxt.Text);
     email.Export = pdf; //Set export type
     email.SendEmail(report); //Send email
     }

    對于Send to all按鈕,讓我們創(chuàng)建一個OnClick事件處理程序:

    private void Send_to_all_Click(object sender, EventArgs e)
    {
    Config.ReportSettings.ShowProgress  
      
       
     
      PDFExport(); //Cteate PDF export
    EmailExport email = new EmailExport(); //Create Email export
     
     
     
     
    
    = ds.Customer;
     
    foreach (DataRow row in table.Rows)
    {
    if (emails == "")
    emails 
    
      
    
    ;
    MessageBox.Show(emails);
    }

    與前面的代碼不同,在循環(huán)中我們添加地址以發(fā)送給變量,然后將其傳遞給消息發(fā)送方法。此方法比前一個方法工作得快得多,特別是如果郵件列表很大。為自己判斷,在這里你發(fā)一封信,而不是一套。

    因此,發(fā)送報表的任務(wù)減少為導出到電子郵件并從數(shù)據(jù)庫向每個地址發(fā)送一封信。

    購買FastReport.Net正版授權(quán),請點擊“咨詢在線客服”喲!

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();