Quản lý Danh bạ Outlook
Bài viết này đề cập đến Outlook độc lập MapiContact các mục được lưu dưới dạng MSG hoặc vCard (VCF). Đối với định dạng trung lập VCardContact lớp đọc và ghi tệp vCard trực tiếp, xem Làm việc với tệp vCard (VCF). Để lưu trữ và đọc các liên hệ trong PST, xem Quản lý Danh bạ trong các Tệp PST.
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:
- Khởi tạo một đối tượng mới của MapiContact lớp.
- Nhập thông tin thuộc tính liên hệ.
- Thêm dữ liệu ảnh (nếu có).
- 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.
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Outlook();
MapiContact contact = new MapiContact();
contact.NameInfo = new MapiContactNamePropertySet("Bertha", "A.", "Buell");
contact.ProfessionalInfo = new MapiContactProfessionalPropertySet("Awthentikz", "Social work assistant");
contact.PersonalInfo.PersonalHomePage = "B2BTies.com";
contact.PhysicalAddresses.WorkAddress.Address = "Im Astenfeld 59 8580 EDELSCHROTT";
contact.ElectronicAddresses.Email1 = new MapiContactElectronicAddress("Experwas", "SMTP", "BerthaABuell@armyspy.com");
contact.Telephones = new MapiContactTelephonePropertySet("06605045265");
contact.PersonalInfo.Children = new string[] { "child1", "child2", "child3" };
contact.Categories = new string[] { "category1", "category2", "category3" };
contact.Mileage = "Some test mileage";
contact.Billing = "Test billing information";
contact.OtherFields.Journal = true;
contact.OtherFields.Private = true;
contact.OtherFields.ReminderTime = new DateTime(2014, 1, 1, 0, 0, 55);
contact.OtherFields.ReminderTopic = "Test topic";
contact.OtherFields.UserField1 = "ContactUserField1";
contact.OtherFields.UserField2 = "ContactUserField2";
contact.OtherFields.UserField3 = "ContactUserField3";
contact.OtherFields.UserField4 = "ContactUserField4";
// Add a photo
using (FileStream fs = File.OpenRead(dataDir + "Desert.jpg"))
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
contact.Photo = new MapiContactPhoto(buffer,
MapiContactPhotoImageFormat.Jpeg);
}
// Save the Contact in MSG format
contact.Save(dataDir + "MapiContact_out.msg",ContactSaveFormat.Msg);
// Save the Contact in VCF format
contact.Save(dataDir + "MapiContact_out.vcf", ContactSaveFormat.VCard);
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 `MapiDistributionList` 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:
- static MapiDistributionList FromVCF(string filePath)
- static MapiDistributionList FromVCF(Stream stream)
Đ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 định danh để đặt VCardSaveOptions.Version thuộc tính. Đoạn mã mẫu sau đây minh họa cách sử dụng VCardVersion định danh để lưu liên hệ ở đị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.
MapiMessage msg = MapiMessage.FromFile(dataDir + "Contact.msg");
MapiContact contact = (MapiContact)msg.ToMapiMessageItem();
Console.WriteLine(contact.NameInfo.DisplayName);
Tải Danh bạ từ VCard
Đoạn mã sau cho bạn cách tải tệp vCard vào một MapiContact sử dụng FromVCard phương thức. Để tải vCard vào một VCardContact thay vào, xem Làm việc với tệp vCard (VCF).
MapiContact contact = MapiContact.FromVCard(dataDir + "Contact.vcf");
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
Mã hoá của tệp vCard được chỉ định qua PreferredEncoding thuộc tính của VCardLoadOptions lớp. Đoạn mã sau cho bạn cách tải các liên hệ từ VCard với mã hoá đã chỉ định.
var loadOptions = new VCardLoadOptions { PreferredEncoding = Encoding.UTF8 };
var contactReadFromFile = MapiContact.FromVCard(dataDir + @"Contact.vcf", loadOptions);
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.
Đoạn mã sau cho thấy cách tắt các trường mở rộng khi lưu một liên hệ:
var contact = MapiContact.FromVCard("contact.vcf");
var options = new VCardSaveOptions
{
UseExtensions = false
};
contact.Save("contact_out.vcf", options);
Làm việc trực tiếp với Tệp vCard
Đọc và ghi tệp vCard (VCF) với định dạng trung lập VCardContact lớp — tải một hoặc nhiều liên hệ, chọn mã hoá văn bản, lưu với một phiên bản vCard cụ thể, và tải không đồng bộ — được đề cập trong một bài viết riêng: Làm việc với tệp vCard (VCF).
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);
Xem Thêm
- Làm việc với tệp vCard (VCF) — đọc và ghi tệp vCard trực tiếp với
VCardContactlớp. - Quản lý Danh bạ trong các Tệp PST — lưu và đọc danh bạ trong PST.