Outlook 联系人管理
与 MapiMessage 类似,Aspose.Email 允许您创建 Outlook 联系人。 MapiContact 该类提供了创建 Outlook 联系人所需的所有相关属性。本文展示了如何使用该类创建、保存和读取 Outlook 联系人。 MapiContact 类。
创建并保存 Outlook 联系人
创建联系人并保存到磁盘:
- 实例化一个新的对象 MapiContact 类。
- 输入联系人属性信息。
- 添加照片数据(如果有)。
- 将联系人保存为 MSG 或 VCard 格式。
以下代码片段展示如何创建并保存 Outlook 联系人。
将 MAPI 分发列表保存为 VCF 文件
下面的代码示例演示了如何将分发列表保存为多联系人 VCF 文件:
// convert the `msg` object to a `MapiMessage` object
var dlist = (MapiDistributionList)msg.ToMapiMessageItem();
//save the distribution list
var options = new MapiDistributionListSaveOptions(ContactSaveFormat.VCard);
dlist.Save("distribution_list.vcf", options);
将多联系人 VCF 文件转换为 MapiDistributionList
Aspose.Email 支持将多联系人 VCF 文件转换为 MapiDistributionList 对象,便于直接在应用程序中管理和导入多个联系人。此功能可通过以下静态方法访问: MapiDistributionList 类:
- static MapiDistributionList FromVCF(string filePath)
- static MapiDistributionList FromVCF(Stream stream)
下面的代码示例演示了如何使用此功能:
// Convert a multi-contact VCF file to a MapiDistributionList
MapiDistributionList dlist = MapiDistributionList.FromVCF(fileName);
以 VCF 格式保存联系人
要将联系人保存为版本 3 的 VCF 格式,请使用 VCardVersion 可枚举项,用于设置 VCardSaveOptions.Version 属性。以下示例代码演示了如何使用 VCardVersion 可枚举对象,用于保存联系人 VCF 版本 3 格式:
var options = new MapiDistributionListSaveOptions(ContactSaveFormat.VCard);
options.Version = VCardVersion.V30;
dlist.Save("distribution_list.vcf", options);
读取 MAPI 联系人
该 MapiContact 该类可用于加载 Outlook MSG 和 VCard 格式的联系人。以下代码片段展示了如何将保存为 MSG 和 VCF 的 Outlook 联系人加载到 MapiContact.
从 MSG 文件加载联系人
以下代码片段展示了如何从 MSG 加载联系人。
从 VCard 加载联系人
以下代码片段展示了如何从 VCard 加载联系人。
使用自定义选项从 vCard 加载 MAPI 联系人
为在将 vCard(.vcf)文件转换为 MAPI 联系人时提供更大灵活性,Aspose.Email for .NET 提供了一个重载 MapiContact.FromVCard(string filePath, VCardLoadOptions options) 接受以下参数的方法 VCardLoadOptions 对象。它提供了对 vCard 文件解释方式的增强控制——尤其在处理不同的 vCard 格式、编码或高级解析场景时。
以下代码示例演示了如何将 .vcf 联系人文件加载到一个 MapiContact 使用接受以下参数的重载创建对象 VCardLoadOptions。加载的联系人随后可用于 PST 文件、MSG 导出或其他 Outlook 兼容格式。
var mapiContact = MapiContact.FromVCard("contact.vcf", new VCardLoadOptions());
Console.WriteLine(mapiContact.NameInfo.DisplayName);
使用指定编码从 VCard 加载联系人
以下代码片段展示了如何使用指定编码从 VCard 加载联系人。
使用指定编码保存 VCard 联系人项
使用以下方式自定义处理 VCard 文件时的保存行为: VCardSaveOptions 类。该 PreferredTextEncoding 该类的属性指定保存 VCard 联系人项时使用的编码。
以下代码示例展示了如何在项目中实现此属性:
var cont = VCardContact.Load(fileName, Encoding.UTF8);
var opt = new VCardSaveOptions();
opt.PreferredTextEncoding = Encoding.UTF8;
cont.Save("my.vcard", opt);
保存带扩展字段的 VCard 文件
该 UseExtensions 该属性允许您控制在保存 vCard 文件时是否可以使用扩展字段。设置为 true(默认)时,允许使用扩展,兼容自定义字段和额外的联系人信息。
以 VCard 格式读取多个联系人
我们的库可以从 VCard 获取所有联系人的列表。可以使用以下方法和步骤完成:
// Checks whether VCard source stream contains multiple contacts.
VCardContact.IsMultiContacts(Stream stream)
// Loads list of all contacts from VCard file.
VCardContact.LoadAsMultiple(string filePath, Encoding encoding)
// Loads list of all contacts from VCard stream.
VCardContact.LoadAsMultiple(Stream stream, Encoding encoding)
以下代码片段演示了如何处理包含多个联系人的 VCard 文件:
using (FileStream stream = new FileStream("test.vcf", FileMode.Open, FileAccess.Read))
{
if(VCardContact.IsMultiContacts(stream))
{
List<VCardContact> contacts = VCardContact.LoadAsMultiple(stream, Encoding.UTF8);
}
}
异步加载 vCard 联系人
该 VCardContact Aspose.Email for .NET 中的类支持异步加载 vCard 文件。它使应用程序能够高效 从 .vcf 文件或流中读取单个或多个联系人而不阻塞主线程——非常适合处理大联系人列表的现代桌面、Web 或移动应用。该类的以下方法可以完成此任务:
-
LoadAsync -
LoadAsMultipleAsync
以下代码示例演示了如何使用 VCardContact.LoadAsMultipleAsync 异步加载 .vcf 文件中的多个 vCard 联系人。加载的联系人在循环中处理,逐个将联系人的显示名称打印到控制台。异步方式确保即使读取大文件时,应用程序仍保持响应。
var contacts = await VCardContact.LoadAsMultipleAsync("contacts.vcf", new VCardLoadOptions(), CancellationToken.None);
foreach (var contact in contacts)
{
Console.WriteLine(contact.IdentificationInfo.DisplayName);
}
将联系信息渲染为 MHTML
可以使用 Aspose.Email API 将 Outlook 联系人转换为 MHTML。此示例展示如何将 VCard 加载到 MapiContact 然后在以下帮助下转换为 MHTML MailMessage API。
//Load VCF Contact and convert to MailMessage for rendering to MHTML
var contact = MapiContact.FromVCard("Contact.vcf");
MemoryStream ms = new MemoryStream();
contact.Save(ms, ContactSaveFormat.Msg);
ms.Position = 0;
MapiMessage msg = MapiMessage.Load(ms, new MsgLoadOptions());
MailConversionOptions op = new MailConversionOptions();
MailMessage eml = msg.ToMailMessage(op);
//Prepare the MHT format options
MhtSaveOptions mhtSaveOptions = new MhtSaveOptions();
mhtSaveOptions.CheckBodyContentEncoding = true;
mhtSaveOptions.PreserveOriginalBoundaries = true;
MhtFormatOptions formatOp = MhtFormatOptions.WriteHeader | MhtFormatOptions.RenderVCardInfo;
mhtSaveOptions.RenderedContactFields = ContactFieldsSet.NameInfo | ContactFieldsSet.PersonalInfo | ContactFieldsSet.Telephones | ContactFieldsSet.Events;
mhtSaveOptions.MhtFormatOptions = formatOp;
eml.Save("ContactMhtml_out.mhtml", mhtSaveOptions);