HTML
JPG
PDF
XML
PST
PST
使用 C# 大批量生成 PST 格式报告
批量生成电子邮件并通过 .NET API 添加到 PST 文件。
如何使用 C# 生成基于 PST 的报告
为了创建 PST 报告,我们将使用
功能丰富、强大且易于使用的 C# 平台报告生成 API。打开
在包管理器中搜索 Aspose.Email 并安装。您也可以使用以下命令在包管理器控制台中执行。
Package Manager 控制台命令
PM> Install-Package Aspose.Email
使用 C# 组装 PST 的步骤
- 将 MailMessage 作为模板并添加动态字段
- 创建数据源和映射
- 使用 MailMessage 对象初始化 TemplateEngine
- 调用 TemplateEngine.Instantiate 方法批量生成消息
- 使用 PersonalStorage.Create 方法创建新 PST
- 在 PST 中添加文件夹
- 使用 FolderInfo.Add 方法将 TemplateEngine 中的消息添加到文件夹
- 以 PST 格式保存
系统要求
Aspose.Email for .NET 在所有主流操作系统上均受支持。只需确保您具备以下前提条件。
- Microsoft Windows 或兼容的操作系统,支持 .NET Framework、.NET Core 和 Xamarin 平台
- 开发环境,如 Microsoft Visual Studio
- Aspose.Email for .NET 在您的项目中引用
PST 消息报告生成的 C# 示例代码
// create a template from MailMessage
MailMessage template = new MailMessage();
// add template field to subject
template.Subject = "Hello, #FirstName#";
template.From = new MailAddress("This email address is being protected from spambots. You need JavaScript enabled to view it.", "This email address is being protected from spambots. You need JavaScript enabled to view it.");
// add template field to receipt
template.To.Add(new MailAddress("#Receipt#", true));
// add template field to html body
template.HtmlBody = "Dear #FirstName# #LastName# Sent Date: #Date#";
// create a new TemplateEngine with the template message.
var engine = new Email.Tools.Merging.TemplateEngine(template);
// fill a DataTable
var dt = new System.Data.DataTable();
dt.Columns.Add("Receipt", typeof(string));
dt.Columns.Add("First Name", typeof(string));
dt.Columns.Add("Last Name", typeof(string));
dt.Columns.Add("Date", typeof(DateTime));
System.Data.DataRow dr;
dr = dt.NewRow();
dr["Receipt"] = "This email address is being protected from spambots. You need JavaScript enabled to view it."; dr["First Name"] = "Nancy"; dr["Last Name:"] = "Davolio"; dr["Date"] = System.DateTime.Now;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Receipt"] = "This email address is being protected from spambots. You need JavaScript enabled to view it."; dr["First Name"] = "Andrew"; dr["Last Name"] = "Fuller"; dr["Date"] = System.DateTime.Now;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["Receipt"] = "This email address is being protected from spambots. You need JavaScript enabled to view it."; dr["First Name"] = "Janet"; dr["Last Name"] = "Leverling"; dr["Date"] = System.DateTime.Now;
dt.Rows.Add(dr);
// map columns
var mappings = new System.Data.Common.DataColumnMappingCollection();
mappings.Add(new System.Data.Common.DataColumnMapping("Receipt", "Receipt"));
mappings.Add(new System.Data.Common.DataColumnMapping("First Name", "FirstName"));
mappings.Add(new System.Data.Common.DataColumnMapping("Last Name", "LastName"));
mappings.Add(new System.Data.Common.DataColumnMapping("Date", "Date"));
Aspose.Email.MailMessageCollection messages;
// create new PST
var pst = Email.Storage.Pst.PersonalStorage.Create("storage.pst", Email.Storage.Pst.FileFormatVersion.Unicode);
// add folder to PST
var inboxFolder = pst.RootFolder.AddSubFolder("Inbox");
// create messages from engine
messages = engine.Instantiate(dt, mappings);
for (int i = 0; i < messages.Count; i++)
{
// save messages in PST format
messages[i].Save(i + ".pst");
inboxFolder.AddMessage(MapiMessage.FromMailMessage(messages[i]));
}
// save in PST format
pst.SaveAs("output.pst", Email.Storage.Pst.FileFormat.Pst);