การจัดการรายชื่อผู้ติดต่อ Outlook

เช่นเดียวกับ MapiMessage, Aspose.Email อนุญาตให้คุณสร้างรายชื่อผู้ติดต่อ Outlook. MapiContact คลาสนี้ให้คุณสมบัติที่เกี่ยวกับผู้ติดต่อทั้งหมดที่จำเป็นสำหรับการสร้างรายชื่อผู้ติดต่อ Outlook บทความนี้แสดงวิธีสร้าง, บันทึกและอ่านรายชื่อผู้ติดต่อ Outlook โดยใช้ MapiContact คลาส.

สร้างและบันทึกรายชื่อ Outlook

เพื่อสร้างรายชื่อและบันทึกลงดิสก์:

  1. สร้างวัตถุใหม่ของ MapiContact คลาส.
  2. ป้อนข้อมูลคุณสมบัติของรายชื่อติดต่อ.
  3. เพิ่มข้อมูลรูปภาพ (ถ้ามี).
  4. บันทึกผู้ติดต่อเป็นรูปแบบ 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 คลาส:

ตัวอย่างโค้ดด้านล่างแสดงวิธีใช้คุณลักษณะนี้:

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

บันทึกรายชื่อติดต่อในรูปแบบ VCF

เพื่อบันทึกผู้ติดต่อในรูปแบบ VCF เวอร์ชัน 3 ให้ใช้ VCardVersion นามธรรมเพื่อกำหนด VCardSaveOptions.Version คุณสมบัติ ตัวอย่างโค้ดต่อไปนี้แสดงการใช้ VCardVersion enumerable เพื่อบันทึกผู้ติดต่อในรูปแบบ VCF เวอร์ชัน 3:

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

การอ่านผู้ติดต่อ MAPI

นี้ MapiContact คลาสนี้สามารถใช้เพื่อโหลดผู้ติดต่อทั้งในรูปแบบ Outlook MSG และ VCard โค้ดสแนปต่อไปนี้แสดงวิธีโหลดผู้ติดต่อ Outlook ที่บันทึกเป็น MSG และ VCF เข้าไปใน MapiContact.

โหลดผู้ติดต่อจากไฟล์ MSG

โค้ดสแนปต่อไปนี้แสดงวิธีโหลดผู้ติดต่อจาก MSG.

โหลดผู้ติดต่อจาก VCard

โค้ดสแนปต่อไปนี้แสดงวิธีโหลดผู้ติดต่อจาก VCard.

โหลดผู้ติดต่อ MAPI จาก vCard ด้วยตัวเลือกกำหนดเอง

เพื่อให้ความยืดหยุ่นมากขึ้นในการแปลงไฟล์ vCard (.vcf) เป็นผู้ติดต่อ MAPI, Aspose.Email สำหรับ .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 property ของคลาสจะระบุการเข้ารหัสที่จะใช้เมื่อบันทึกรายการผู้ติดต่อ VCard.

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีนำคุณสมบัตินี้ไปใช้ในโครงการของคุณ:

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

บันทึกไฟล์ VCard พร้อมฟิลด์ขยาย

นี้ UseExtensions property นี้ให้คุณควบคุมว่าจะใช้ฟิลด์ขยายเมื่อบันทึกไฟล์ 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 สำหรับ .NET รองรับการโหลดไฟล์ vCard แบบอะซิงโครนัส ทำให้แอปพลิเคชันสามารถ อ่านผู้ติดต่อเดียวหรือหลายรายการจากไฟล์หรือสตรีม .vcf โดยไม่บล็อกเธรดหลัก อย่างมีประสิทธิภาพ - เหมาะสำหรับแอปเดสก์ท็อป, เว็บ หรือโมบายสมัยใหม่ที่จัดการกับรายการผู้ติดต่อจำนวนมาก เมธอดต่อไปนี้ของคลาสสามารถทำงานดังกล่าวได้:

  • LoadAsync

  • LoadAsMultipleAsync

ตัวอย่างโค้ดต่อไปนี้แสดงวิธี โหลดผู้ติดต่อ vCard หลายรายการแบบอะซิงโครนัส จากไฟล์ .vcf โดยใช้ VCardContact.LoadAsMultipleAsync ผู้ติดต่อที่โหลดจะถูกประมวลผลในลูปโดยพิมพ์ชื่อแสดงของแต่ละผู้ติดต่อไปยังคอนโซล วิธีแบบอะซิงโครนัสทำให้แอปพลิเคชันตอบสนองได้ต่อเนื่อง แม้เมื่ออ่านไฟล์ขนาดใหญ่.

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

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

เรนเดอร์ข้อมูลผู้ติดต่อเป็น MHTML

ผู้ติดต่อ Outlook สามารถแปลงเป็น MHTML ได้โดยใช้ Aspose.Email API ตัวอย่างนี้แสดงวิธีโหลด 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);