GroupDocs.Assembly for .NET enables you to generate email messages dynamically from templates. You can set email attributes like subject, body, and recipients (To, CC, BCC) using template syntax, making it easy to create personalized email messages from data sources.
In your email template (EmailTemplate.msg), set attributes and body:
Subject field:
<<[email.Subject]>>
To field:
<<[email.Recipient]>>
Body:
Dear <<[email.CustomerName]>>,
Please find your invoice below:
Amount: <<[email.InvoiceAmount]:"C">>
Thank you for your business.
Generate Email with Multiple Recipients
Set multiple recipients using foreach:
usingGroupDocs.Assembly;usingSystem.Collections.Generic;publicclassEmailData{publicList<string>Recipients{get;set;}publicstringSubject{get;set;}publicstringMessage{get;set;}}publicstaticvoidGenerateEmailWithMultipleRecipients(){varemailData=newEmailData{Recipients=newList<string>{"recipient1@example.com","recipient2@example.com"},Subject="Important Update",Message="This is an important message for all recipients."};DocumentAssemblerassembler=newDocumentAssembler();assembler.AssembleDocument("EmailTemplate.msg","EmailOutput.msg",newDataSourceInfo(emailData,"email"));Console.WriteLine("Email with multiple recipients generated successfully.");}
Template for multiple recipients:
To field:
<<foreach [r in email.Recipients]>><<[r]>>; <</foreach>>
Body:
<<[email.Message]>>
Generate Email with CC and BCC
Set CC and BCC recipients:
usingGroupDocs.Assembly;publicclassEmailData{publicstringTo{get;set;}publicstringCc{get;set;}publicstringBcc{get;set;}publicstringSubject{get;set;}publicstringBody{get;set;}}publicstaticvoidGenerateEmailWithCcBcc(){varemailData=newEmailData{To="customer@example.com",Cc="manager@example.com",Bcc="archive@example.com",Subject="Invoice",Body="Please find attached invoice."};DocumentAssemblerassembler=newDocumentAssembler();assembler.AssembleDocument("EmailTemplate.msg","EmailOutput.msg",newDataSourceInfo(emailData,"email"));Console.WriteLine("Email with CC and BCC generated successfully.");}
Template:
To field:
<<[email.To]>>
CC field:
<<[email.Cc]>>
BCC field:
<<[email.Bcc]>>
Body:
<<[email.Body]>>
Generate Email with Rich Content
Create emails with tables, lists, and formatted content:
Dear <<[order.CustomerName]>>,
Thank you for your order. Here are your items:
<<foreach [in order.Items]>>
• <<[ProductName]>> - <<[Price]:"C">>
<</foreach>>
Total: <<[order.Items.Sum(i => i.Price)]:"C">>
Generate Email from Collection
Generate multiple emails from a collection:
usingGroupDocs.Assembly;usingSystem.Collections.Generic;publicclassCustomerEmail{publicstringEmail{get;set;}publicstringName{get;set;}publicstringSubject{get;set;}}publicstaticvoidGenerateEmailsFromCollection(){List<CustomerEmail>customers=newList<CustomerEmail>{newCustomerEmail{Email="customer1@example.com",Name="John Doe",Subject="Personalized Message"},newCustomerEmail{Email="customer2@example.com",Name="Jane Smith",Subject="Personalized Message"}};// Generate email for each customerDocumentAssemblerassembler=newDocumentAssembler();foreach(varcustomerincustomers){stringoutputPath=$"Email_{customer.Name.Replace("", "_")}.msg";assembler.AssembleDocument("EmailTemplate.msg",outputPath,newDataSourceInfo(customer,"customer"));}Console.WriteLine("Emails generated from collection successfully.");}
Set Email From Address
Set the sender (From) address:
usingGroupDocs.Assembly;publicclassEmailData{publicstringFrom{get;set;}publicstringTo{get;set;}publicstringSubject{get;set;}}publicstaticvoidGenerateEmailWithFrom(){varemailData=newEmailData{From="sender@example.com",To="recipient@example.com",Subject="Test Email"};DocumentAssemblerassembler=newDocumentAssembler();assembler.AssembleDocument("EmailTemplate.msg","EmailOutput.msg",newDataSourceInfo(emailData,"email"));Console.WriteLine("Email with From address generated successfully.");}
Template:
From field:
<<[email.From]>>
Warning
Email templates must be in MSG or EML format. The template structure depends on the email client used to create it. Ensure proper formatting for HTML or RTF email bodies.
Advanced Usage Topics
To learn more about email attachments, HTML email bodies, email headers, and advanced email generation scenarios, please refer to the advanced usage section.
More resources
GitHub Examples
You may easily run the code above and see the feature in action in our GitHub examples: