借助Aspose.Email,使用 C# .NET 创建 PST 文件并填充内容

PST(个人存储表)文件是管理 Outlook 数据的重要组成部分,方便存储电子邮件、联系人、日历和其他项目。在 C# .NET 开发领域,创建和管理存储文件的过程对于各种应用程序至关重要。

在本文中,我们将探讨如何使用 C# .NET 创建 PST 文件。我们将介绍如何创建空的 PST 存储、添加文件夹和子文件夹、合并标准和常规文件夹,最后将电子邮件和 Outlook 项目添加到 PST 文件。

Aspose.Email 是用于轻松的开发 email 功能的应用程序的一组控件,基于  ASP.NET 的Web应用、Web服务和Windows 应用。支持 Outlook PST, EML, MSG, and MHT 格式. 允许开发者直接与 SMTP, POP, FTP, 和 MS Exchange 服务器进行工作。支持邮件合并、行事历、定制邮件标题和内容、嵌入文件等,Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。

Aspose.Email 最新下载

用于创建和填充 PST 文件的 C# API

为了在 C# 中处理 PST 格式的存储文件,我们将使用Aspose.Email for .NET。这个全面的库是专为 .NET 开发人员设计的,提供处理电子邮件相关数据的强大工具。借助其直观的 API,开发人员可以轻松创建、读取和操作 PST 存储结构,包括添加文件夹、子文件夹和标准 Outlook 文件夹。该库通过提供解析、创建、发送、接收和转换各种格式(如 MSG、EML 和 MHTML)的电子邮件的功能,简化了电子邮件消息处理。Aspose.Email 使开发人员能够在其 .NET 应用程序中有效地管理与电子邮件相关的任务,增强功能和性能,同时为最终用户提供卓越的电子邮件处理功能。

为了利用 API 的强大功能,您可以下载其 DLL 或使用以下命令从NuGet安装它:

在 C# 中创建 PST 文件

PM> Install-Package Aspose.Email
创建最小空 PST 存储

首先,让我们创建一个空的个人存储。这涉及初始化一个没有任何项目的 PST 文件。下面的代码示例将向您展示如何为名为“sample.pst”的新文件设置基本结构,该文件具有 Unicode 文件格式版本。要创建新的 PST 文件,请使用 PersonalStorage.Create方法。

// Initialize the PersonalStorage instance
using (var pst = PersonalStorage.Create("sample.pst", FileFormatVersion.Unicode))
{
// Add your code for further operations
}

注意:最小 pst 为 256 Kb,包含一个根文件夹和一个已删除邮件文件夹。

添加文件夹和子文件夹

一旦我们有了空的 PST 存储,下一步就是添加文件夹和子文件夹以有效地组织我们的数据。请考虑以下小节并尝试以下代码示例来执行任务。

添加标准文件夹

使用 Aspose.Email 可以轻松添加收件箱、发件箱、已发送邮件、草稿等标准文件夹。以下代码示例演示了如何在名为“sample.pst”的 PST 中创建一个名为“收件箱”的新文件夹。该代码使用PersonalStorage类打开 PST 文件,然后调用CreatePredefinedFolder()方法为入站项目创建标准文件夹。该文件夹是使用预定义文件夹类型StandardIpmFolder.inbox创建的,通常代表电子邮件客户端中的收件箱文件夹。

  1. 初始化一个新的PersonalStorage对象。
  2. 使用PersonalStorage实例 (pst)的CreatePredefinedFolder方法创建一个名为“Inbox”的标准文件夹,并指定文件夹类型StandardIpmFolder.Inbox以表明它是一个收件箱文件夹。
using (var pst = PersonalStorage.Create("sample.pst", FileFormatVersion.Unicode))
{
// Create a standard folder (Inbox)
var inboxFolder = pst.CreatePredefinedFolder("Inbox", StandardIpmFolder.Inbox);
}

以下列表包含可添加到新 PST 文件的标准文件夹:

  • 收件箱
  • 发送的邮件
  • 日历
  • 联系方式
  • 杂志
  • 笔记
  • 任务
  • 同步问题
  • 垃圾邮件
  • RSS订阅

添加常规文件夹

除了标准文件夹外,用户还经常创建具有特定名称的自定义文件夹,以便更好地组织电子邮件。以下代码片段显示了如何将自定义文件夹添加到 PST 文件的根目录。

  1. 初始化一个新的PersonalStorage对象。
  2. 使用PersonalStorage实例的 RootFolder 属性的AddSubFolder方法创建自定义文件夹。
  3. 创建“自定义文件夹”后,您可以再次使用AddSubFolder方法在其中创建子文件夹。将子文件夹的所需名称作为参数提供给AddSubFolder方法。
using (var pst = PersonalStorage.Create("sample.pst", FileFormatVersion.Unicode))
{
// Create a custom folder
var someFolder = pst.RootFolder.AddSubFolder("SomeFolder");// Create a subfolder to the "Custom Folder"
var subFolder = customFolder.AddSubFolder("SubFolder");
}
添加电子邮件和 Outlook 项目

有了结构之后,我们现在可以用电子邮件和其他 Outlook 项目填充我们的 PST 文件。这涉及创建电子邮件、约会、联系人、任务等,并将它们添加到文件中的相应文件夹中。让我们考虑几个例子。

添加新电子邮件

下面的代码示例将向您展示如何将新电子邮件添加到 PST 文件中的“收件箱”文件夹。代码涉及以下步骤:

  1. 初始化一个新的PersonalStorage对象。
  2. 使用PersonalStorage实例的 RootFolder 属性上的GetSubFolder方法检索收件箱文件夹。
  3. 实例化一个新的MapiMessage对象。
  4. 使用inboxFolder 对象上的AddMessage方法将新创建的消息(消息)添加到收件箱文件夹。
using (var pst = PersonalStorage.Create("sample.pst", FileFormatVersion.Unicode))
{
// Access the folder to add items
var inboxFolder = pst.RootFolder.GetSubFolder("Inbox");// Create a new message
var message = new MapiMessage("from@example.com", "to@example.com", "Subject", "Body");// Add the message to the Inbox folder
inboxFolder.AddMessage(message);
}

添加 Outlook 项目

以下代码示例允许您将联系人添加到新的 PST 文件。它概述了创建新的个人存储文件、向其中添加标准联系人文件夹、从 VCF 文件加载联系人以及将联系人添加到联系人文件夹的过程。代码涉及以下步骤:

  1. 初始化一个新的PersonalStorage对象。
  2. 使用CreatePredefinedFolder方法创建一个标准文件夹,并指定文件夹类型StandardIpmFolder.Contacts来指示它是联系人文件夹。
  3. 使用MapiContact.FromVCard方法从 VCF 文件加载联系人。此方法创建一个表示联系人信息的MapiContact对象。
  4. 使用AddMapiMessageItem方法将加载的联系人添加到联系人文件夹。
using (var pst = PersonalStorage.Create("sample.pst", FileFormatVersion.Unicode))
{
// Create a standard folder (Contacts)
var contactsFolder = pst.CreatePredefinedFolder("My Contacts", StandardIpmFolder.Contacts);// Load a contact from vcf file
var contact = MapiContact.FromVCard("Contact.vcf");// Add the contact to the folder
contactsFolder.AddMapiMessageItem(contact);
}
总结

在本教程中,我们探讨了如何使用 C# .NET 和 Aspose.Email 库创建 PST 文件。从创建空的 PST 存储到添加文件夹、子文件夹和各种 Outlook 项目,该库提供了一套全面的 PST 文件操作功能。将这些功能集成到您的 C# .NET 应用程序中,使您能够有效地管理 Outlook 数据,从而增强软件解决方案的稳健性和多功能性。

除此之外,该库还提供了用于创建、提取、解析、转换和操作电子邮件的广泛功能,并提供全面的文档和代码示例,以简化集成过程,使开发人员可以轻松地在其 .NET 应用程序中实现与电子邮件相关的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/28528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

内窥镜窄带光

文章目录 NBI相关信息 NBI相关信息 第一不知道哪家有这个技术? 第二直接搜索找不到相关信息 第三只能搜企业官网 搜集到的与NBI,相关的信息如下 英美达医疗公司 https://www.innermed.com/index.php/gongsixinwen/139.html 新光维医疗公司 官网页面…

【Spring】1. Maven项目管理

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

【无标题】Pycharm执行报错

file 读取未指定utf-8编码,加上就好了 疑问:为什么 有的电脑可以直接跑呢?该电脑、Pycharm、工程,已经做了修改设置默认值,但是到新的电脑上,就需要重新设置,所以 file 读、写,最好…

鸿蒙轻内核调测-内存调测-内存泄漏检测

1、基础概念 内存泄漏检测机制作为内核的可选功能,用于辅助定位动态内存泄漏问题。开启该功能,动态内存机制会自动记录申请内存时的函数调用关系(下文简称LR)。如果出现泄漏,就可以利用这些记录的信息,找到…

程序员日志之计算机相关专业还值得选择吗?

目录 传送门正文日志1、概要2、专业选择2.1、专业2.2、学校2.3、城市 3、计算机相关专业还值得选择吗? 传送门 SpringMVC的源码解析(精品) Spring6的源码解析(精品) SpringBoot3框架(精品) MyB…

中华老字号李良济,展现百年匠心之魅力,释放千年中医药文化自信

6月14-16日,“潮品老字号 国货LU锋芒”江苏老字号博览会在南京隆重启幕,中华老字号李良济凭借过硬的品牌实力和优质的口碑再次受邀参加,并在展会上绽放百年匠心魅力,彰显千年中医药文化自信! 百年匠心 以实力铸就荣耀…

计算机组成原理之定点乘法运算

文章目录 原码并行乘法与补码并行乘法原码算法运算规则存在的问题带符号的阵列乘法器习题原码阵列乘法器间接补码阵列乘法器直接补码阵列乘法器 补码与真值的转换 原码并行乘法与补码并行乘法 原码算法运算规则 存在的问题 理解流水式阵列乘法器(并行乘法器&#x…

Java环境安装

下载JDK https://www.oracle.com/cn/java/technologies/downloads/#jdk22-windows 点开那个下载都可以但是要记住下载的路径因为下一步要添加环境变量 选择编辑系统环境变量 点击环境变量 点击新建 新建环境变量JAVA_HOME 并输入JDK在计算机保存的路径 打开cmd 输入java -…

GStreamer——教程——基础教程4:Time management

基础教程4:Time management(时间管理) 目标 本教程展示了如何使用GStreamer时间相关工具。特别是: 如何查询管道以获取流位置或持续时间等信息。如何寻找(跳转)到流内的不同位置(时间&#x…

数据结构与算法笔记:基础篇 -递归树:如何借助树来求解递归算法的时间复杂度?

概述 我们都知道,递归代码的时间复杂度分析起来很麻烦。在《排序(下)》哪里讲过,如何用递推公式,求解归并排序、快速排序的时间复杂度,但是有些情况,比如快排的平均时间复杂度的分析,用递推公式的话&#…

《天软股票特色因子定期报告》

最新《天软股票特色因子定期报告》(2024-06),抢先发布 内容概要如下: 天软特色因子A08006(近一月日度买卖压力2)从行业角度分析,在电子设备、石油石化行业表现稳定,无论在有效性、区…

复星杏脉算法面经2024年5月16日面试

复星杏脉算法面经2024年5月 面试记录:3个部分1. 自己介绍 2. 问八股 3.代码题先自我介绍20分钟问问题1. 梯度爆炸怎么解决,三个解决方案:梯度裁剪(Gradient Clipping)正则化(Regularization)调整…

nginx+tomcat+nfs →web集群部署

nginxtomcatnfs →web集群部署 一.安装前介绍 NGINX是一个高性能的Web服务器和反向代理服务器。它能够处理静态内容,缓存请求结果,以及将请求转发给后端服务器。通过反向代理,NGINX能够实现请求的负载均衡、安全性增强、SSL加密等功能。此外…

Linux中文件查找相关命令比较

Linux中与文件定位的命令有find、locate、whereis、which,type。 一、find find命令最强,能搜索各种场景下的文件,需要配合相关参数,搜索速度慢。在文件系统中递归查找文件。 find /path/to/search -name "filename"…

位运算算法:编程世界中的魔法符号

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一. 常见位运算总结 二、常见位运算题目 2.1 位1的个数 2.2 比特数记位(典型dp) 2.3 汉明距离 2.4 只出现一次的数字(1) 2.5 只出…

OpenGL系列(六)变换

在三角形和纹理贴图示例中,顶点使用的是归一化设备坐标,在该坐标系下,顶点的每个轴的取值为-1到1,超出范围的顶点不可见。 基于归一化设备坐标的物体的形状随着设备的大小变换而变化,这里产生的第一个问题是&#xff0…

三极管的理解

三极管的放大使用 基极集电极之间可理解为电子扩展 电化学效应;产生载流子多少,从而射集间而流动大小 电化学效应,电子漂移现象,基极与集电极的电流的作用在于产生载流子 电流的流动,需要载流子,从而基极…

Linux初识地址空间

前言 上一期我们对进程优先级、命令行参数以及环境和变量做了介绍!以前我们就提到过一个问题有了运行队列为什么还要有优先级?本期将带你揭晓! 本期内容介绍 虚拟地址空间的引入 虚拟地址空间的介绍 如何理解地址空间 为什么要有地址空间 如…

Elasticsearch:智能 RAG,获取周围分块(一)

作者:来自 Elastic Sunile Manjee 在检索增强生成 (RAG) 领域,一个持续存在的挑战是找到输入大型语言模型 (LLM) 的最佳数据量。数据太少会导致响应不足或不准确,而数据太多会导致答案模糊。这种微妙的平衡启发我开发了一个专注于智能分块和利…

花钱就能过?PMP到底有没有用

在项目管理领域,PMP(Project Management Professional)认证常被看作是专业能力的金牌标准。 然而,伴随着这一认证的普及,也出现了一些质疑声,比如“PMP认证是否只是金钱和时间的投入就能获得的证书&#xf…