Aspose.Network 3.0 makes it simpler and easier to create E-Mail newsletter or subscription solutions. A new sophisticated E-Mail Template Engine is embeded, which provides lots of cool features and function and greatly reduce the the programming works.
Top Features in MailMerge:
- The First Email Component supports using Customer Defined Function in the template. For example, you can register a TemplateRoutine, and use it in the template file.
- Creates E-mail template from file
- Creates E-mail template from MailMessage instance
- Supports DataTable as data source.
- Supports DataRowCollection as data source
- Supports DataReader as data source
- Asynchronous and Synchronous programming models
- Support Event model
A new class called TemplateEngine is created, for generating the E-Mail messages from the template and data source. After the E-Mail messages is created by the TemplateEngine , Use the SmtpClient to send the messages.
Sample:
[C#]
//template routine to provide signature
static object GetSignature(object[] args)
{
return “John SmithProduct LeadAspose Ltd.” + DateTime.Now.ToShortDateString();
}
static void Main(string[] args)
{
//create a new MailMessage instance as a template
MailMessage template = new MailMessage();//add template field to subject
template.Subject = “Hello, #FirstName#”;
template.From = “sale@aspose.com”;//add template field to receipt
template.To.Add(new MailAddress("#Receipt#", false));//add template field to html body
//use GetSignment as the template routine, which will provide the same signature.
template.HtmlBody = “Dear #FirstName# #LastName#,”;
template.HtmlBody += “Thank you for your interest in Aspose.Network.”;
template.HtmlBody += “Have fun with it.#GetSignature()#”;//create a new TemplateEngine with the template message.
TemplateEngine engine = new TemplateEngine(template);//register the GetSignment as a templet routine, for we use it in the template.
engine.RegisterRoutine(“GetSignature”, new TemplateRoutine(GetSignature));//fill a DataTable as data source
DataTable dt = new DataTable();
dt.Columns.Add(“Receipt”, typeof(string));
dt.Columns.Add(“FirstName”, typeof(string));
dt.Columns.Add(“LastName”, typeof(string));DataRow dr;
dr = dt.NewRow();
dr[“Receipt”] = “Nancy.DavolioNancy@somedomain.com”;
dr[“FirstName”] = “Nancy”;
dr[“LastName”] = “Davolio”;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[“Receipt”] = “Andrew.FullerAndrew@somedomain.com”;
dr[“FirstName”] = “Andrew”;
dr[“LastName”] = “Fuller”;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr[“Receipt”] = “Janet.LeverlingJanet@somedomain.com”;
dr[“FirstName”] = “Janet”;
dr[“LastName”] = “Leverling”;
dt.Rows.Add(dr);MailMessageCollection messages;
try
{
//create the messages from the template and datasource.
messages= engine.Instantiate(dt);SmtpClient client = new SmtpClient(“smtp.somedomain.com”, 25, “someone”,“password”);
client.BulkSendAsync(messages, null);
}
catch (MailException ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
catch (SmtpException ex)
{
System.Diagnostics.Debug.WriteLine(ex.ToString());
}
}
[VB]
//template routine to provide signature
Shared Function GetSignature(ByVal args() As Object) As Object
Return “John SmithProduct LeadAspose Ltd.” + DateTime.Now.ToShortDateString()
End Function
Shared Sub Main(ByVal args() As String)
‘create a new MailMessage instance as a template
Dim template As MailMessage = New MailMessage()‘add template field to subject
template.Subject = “Hello, #FirstName#”
template.From = “sale@aspose.com”‘add template field to receipt
template.To.Add(New MailAddress("#Receipt#",False))‘add template field to html body
‘use GetSignment as the template routine, which will provide the same signature.
template.HtmlBody = “Dear #FirstName# #LastName#,”
template.HtmlBody += “Thank you for your interest in Aspose.Network.”
template.HtmlBody += “Have fun with it.#GetSignature()#”‘create a new TemplateEngine with the template message.
Dim engine As TemplateEngine = New TemplateEngine(template)‘register the GetSignment as a templet routine, for we use it in the template.
engine.RegisterRoutine(“GetSignature”,New TemplateRoutine(GetSignature))‘fill a DataTable as data source
Dim dt As DataTable = New DataTable()
dt.Columns.Add(“Receipt”, Type.GetType(String))
dt.Columns.Add(“FirstName”, Type.GetType(String))
dt.Columns.Add(“LastName”, Type.GetType(String))Dim dr As DataRow
dr = dt.NewRow()
dr[“Receipt”] = “Nancy.DavolioNancy@somedomain.com”
dr(“FirstName”) = “Nancy”
dr(“LastName”) = “Davolio”
dt.Rows.Add(dr)
dr = dt.NewRow()
dr[“Receipt”] = “Andrew.FullerAndrew@somedomain.com”
dr(“FirstName”) = “Andrew”
dr(“LastName”) = “Fuller”
dt.Rows.Add(dr)
dr = dt.NewRow()
dr[“Receipt”] = “Janet.LeverlingJanet@somedomain.com”
dr(“FirstName”) = “Janet”
dr(“LastName”) = “Leverling”
dt.Rows.Add(dr)Dim messages As MailMessageCollection
Try
‘create the messages from the template and datasource.
messages= engine.Instantiate(dt)
Dim smtpClient as New SmtpClient()
smtpClient.Host=“smtp.domain.com”
smtpClient.Username=“someone”
smtpClient.Password=“passoword”
smtpClient.BulkSentAsync(messages, null)Catch ex As MailException
System.Diagnostics.Debug.Write(ex.ToString())
Catch ex As SmtpException
System.Diagnostics.Debug.Write(ex.ToString())
End Try
End Sub