if (_lvDataItems.Items.Count > 0)

{

    // We prepare the data.

    // We will create a offline datatable to demonstrate , this can veru well

    // be fetched from database.

 

    DataSet dsOrderData = new DataSet();

 

    #region Create Data

    //Create a datatable

    DataTable tb = new DataTable("ORDERS");

 

    tb.Columns.Add("FIRSTNAME");

    tb.Columns.Add("LASTNAME");

    tb.Columns.Add("EMAIL");

    tb.Columns.Add("ORDER_ID");

    tb.Columns.Add("CUSTOMER_ID");

    tb.Columns.Add("PRODUCT");

    tb.Columns.Add("QUANTITY");

 

    //Create Sample set of data

    for (int i = 0; i < _lvDataItems.Items.Count; i++)

    {

        Utils.ListRowItem lri = (Utils.ListRowItem)_lvDataItems.Items[i].Tag;

 

        DataRow dr = tb.NewRow();

        dr["FIRSTNAME"] = lri.FirstName;

        dr["LASTNAME"] = lri.LastName;

        dr["EMAIL"] = lri.Email;

        dr["ORDER_ID"] = lri.OrderId;

        dr["CUSTOMER_ID"] = i;

        dr["PRODUCT"] = lri.Product;

        dr["QUANTITY"] = lri.Quantity;

        tb.Rows.Add(dr);

    }

 

    #endregion

 

    this.AddLogEntry("Creating templater.");

 

    // We create the templater object.

    ActiveUp.Net.Mail.Templater templater = new ActiveUp.Net.Mail.Templater("mailFormat_working_with_list.xml");

 

    // We instanciante the Merger object by passing the templater data.

    Merger merger = new Merger(templater);

 

    // We merge the message templates.

    merger.MergeListTemplate("PRODUCTS_TEXT", dsOrderData.Tables["ORDERS"]);

    merger.MergeListTemplate("PRODUCTS_HTML", dsOrderData.Tables["ORDERS"]);

 

 

    // We merge our message with the data.

    merger.MergeMessage(dsOrderData.Tables["ORDERS"]);

 

    this.AddLogEntry("Sending template message.");

 

    try

    {

        // We send the mail

        merger.Message.Send(smtpServerAddressTextbox.Text);

 

        this.AddLogEntry("Message sent successfully.");

    }

 

    catch (SmtpException ex)

    {

        this.AddLogEntry(string.Format("Smtp Error: {0}", ex.Message));

    }

 

    catch (Exception ex)

    {

        this.AddLogEntry(string.Format("Failed: {0}", ex.Message));

    }

}

 

else

{

    this.AddLogEntry("No datas defined.");

}