Quản lý Danh bạ Outlook

Giống như MapiMessage, Aspose.Email cho phép bạn tạo danh bạ Outlook. The MapiContact lớp cung cấp tất cả các thuộc tính liên quan đến danh bạ cần thiết để tạo một danh bạ Outlook. Bài viết này trình bày cách tạo, lưu và đọc một danh bạ Outlook bằng cách sử dụng MapiContact lớp.

Tạo và Lưu Liên hệ Outlook

Để tạo một liên hệ và lưu nó vào đĩa:

  1. Khởi tạo một đối tượng mới của MapiContact lớp.
  2. Nhập thông tin thuộc tính liên hệ.
  3. Thêm dữ liệu ảnh (nếu có).
  4. Lưu danh bạ dưới dạng MSG hoặc VCard.

Đoạn mã sau cho bạn thấy cách tạo và lưu liên hệ Outlook.

Lưu Danh sách Phân phối MAPI thành Tệp VCF

Đoạn mã mẫu dưới đây minh họa cách lưu danh sách phân phối thành tệp VCF đa danh bạ:

// 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);

Chuyển đổi Tệp VCF Đa Danh bạ sang MapiDistributionList

Aspose.Email hỗ trợ chuyển đổi các tệp VCF đa danh bạ thành MapiDistributionList đối tượng, giúp dễ dàng quản lý và nhập nhiều danh bạ trực tiếp vào ứng dụng của bạn. Tính năng này có thể truy cập thông qua các phương thức tĩnh sau trong MapiDistributionList lớp:

Đoạn mã mẫu dưới đây minh họa cách sử dụng tính năng này:

// Convert a multi-contact VCF file to a MapiDistributionList
MapiDistributionList dlist = MapiDistributionList.FromVCF(fileName);

Save Contacts in VCF Format

Để lưu danh bạ ở định dạng VCF phiên bản 3, sử dụng VCardVersion liệt kê để thiết lập VCardSaveOptions.Version thuộc tính. Đoạn mã mẫu sau đây minh họa cách sử dụng VCardVersion enumerable để lưu danh bạ định dạng VCF phiên bản 3:

var options = new MapiDistributionListSaveOptions(ContactSaveFormat.VCard);
options.Version = VCardVersion.V30;
dlist.Save("distribution_list.vcf", options);

Đọc Danh bạ MAPI

Cái MapiContact lớp có thể được sử dụng để tải danh bạ định dạng Outlook MSG và VCard. Đoạn mã sau đây cho bạn cách tải danh bạ Outlook được lưu dưới dạng MSG và VCF vào một MapiContact.

Tải Danh bạ từ Tệp MSG

Đoạn mã dưới đây cho bạn cách tải danh bạ từ MSG.

Tải Danh bạ từ VCard

Đoạn mã dưới đây cho bạn cách tải danh bạ từ VCard.

Tải Danh bạ MAPI từ vCard với Tùy chọn Tùy chỉnh

Để cung cấp tính linh hoạt hơn khi chuyển đổi các tệp vCard (.vcf) sang danh bạ MAPI, Aspose.Email cho .NET cung cấp một overload MapiContact.FromVCard(string filePath, VCardLoadOptions options) phương thức chấp nhận một VCardLoadOptions đối tượng. Nó cung cấp kiểm soát cải thiện cách các tệp vCard được diễn giải - đặc biệt khi làm việc với các định dạng vCard khác nhau, mã hoá, hoặc các kịch bản phân tích nâng cao.

Đoạn mã mẫu sau đây minh họa cách tải tệp liên hệ .vcf vào một MapiContact đối tượng sử dụng overload chấp nhận VCardLoadOptions. Danh bạ đã tải có thể được sử dụng trong tệp PST, xuất MSG, hoặc các định dạng tương thích Outlook khác.

var mapiContact = MapiContact.FromVCard("contact.vcf", new VCardLoadOptions());
Console.WriteLine(mapiContact.NameInfo.DisplayName);

Tải Danh bạ từ VCard với Mã hoá Được Chỉ định

Đoạn mã dưới đây cho bạn cách tải danh bạ từ VCard với mã hoá đã chỉ định.

Lưu Các Mục Danh bạ VCard với Mã hoá Được Chỉ định

Tùy chỉnh hành vi lưu khi làm việc với tệp VCard bằng cách sử dụng VCardSaveOptions lớp. PreferredTextEncoding thuộc tính của lớp sẽ chỉ định mã hoá sẽ được sử dụng khi lưu các mục danh bạ VCard.

Mẫu mã sau đây cho thấy cách triển khai thuộc tính này trong dự án của bạn:

var cont = VCardContact.Load(fileName, Encoding.UTF8);
var opt = new VCardSaveOptions();
opt.PreferredTextEncoding = Encoding.UTF8;
cont.Save("my.vcard", opt);

Lưu Tệp VCard với Các Trường Mở rộng

Cái UseExtensions thuộc tính cho phép bạn kiểm soát việc có sử dụng các trường mở rộng khi lưu tệp vCard hay không. Khi đặt là true (mặc định), các phần mở rộng được cho phép, cung cấp khả năng tương thích với các trường tùy chỉnh và thông tin liên hệ bổ sung.

Đọc nhiều liên hệ trong định dạng VCard

Thư viện của chúng tôi cho phép lấy danh sách tất cả danh bạ từ một VCard. Điều này có thể thực hiện bằng các phương thức và bước sau:

// 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)

Đoạn mã dưới đây minh họa cách xử lý các tệp VCard chứa nhiều danh bạ:

using (FileStream stream = new FileStream("test.vcf", FileMode.Open, FileAccess.Read))
{
    if(VCardContact.IsMultiContacts(stream))
    {
        List<VCardContact> contacts = VCardContact.LoadAsMultiple(stream, Encoding.UTF8);
    }
}

Tải Danh bạ vCard Bất đồng bộ

Cái VCardContact lớp trong Aspose.Email cho .NET hỗ trợ tải bất đồng bộ các tệp vCard. Điều này cho phép các ứng dụng đọc hiệu quả một hoặc nhiều danh bạ từ tệp .vcf hoặc stream mà không chặn luồng chính - lý tưởng cho các ứng dụng desktop, web hoặc di động hiện đại xử lý danh sách liên hệ lớn. Các phương thức sau của lớp này có thể thực hiện nhiệm vụ:

  • LoadAsync

  • LoadAsMultipleAsync

Đoạn mã mẫu dưới đây minh họa cách bất đồng bộ tải nhiều danh bạ vCard từ tệp .vcf bằng VCardContact.LoadAsMultipleAsync. Các danh bạ đã tải được xử lý trong một vòng lặp, in tên hiển thị của mỗi danh bạ ra console. Cách tiếp cận bất đồng bộ đảm bảo ứng dụng vẫn phản hồi nhanh, ngay cả khi đọc các tệp lớn.

var contacts = await VCardContact.LoadAsMultipleAsync("contacts.vcf", new VCardLoadOptions(), CancellationToken.None);

foreach (var contact in contacts)
{
    Console.WriteLine(contact.IdentificationInfo.DisplayName);
}

Hiển thị thông tin liên hệ dưới dạng MHTML

Danh bạ Outlook có thể được chuyển đổi sang MHTML bằng cách sử dụng API Aspose.Email. Ví dụ này cho thấy cách một VCard được tải vào MapiContact và sau đó được chuyển đổi sang MHTML với sự trợ giúp của 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);