C# में vCard (VCF) फ़ाइलों के साथ काम करना
यह लेख कवर करता है VCardContact क्लास से Aspose.Email.PersonalInfo.VCard नेमस्पेस, जो Outlook और MAPI से स्वतंत्र रूप से vCard (VCF) फ़ाइलें पढ़ता और लिखता है। Outlook बनाने और प्रबंधित करने के लिए MapiContact आइटम्स — जिन्हें VCF में निर्यात भी किया जा सकता है — देखें Outlook संपर्क प्रबंधन.
VCardContact बनाम MapiContact
Aspose.Email दो विभिन्न क्लासों के माध्यम से संपर्कों को उजागर करता है, और सही को चुनना बहुत सी दुविधाओं से बचाता है:
- VCardContact (नेमस्पेस Aspose.Email.PersonalInfo.VCard) — एक शुद्ध vCard ऑब्जेक्ट। इसे उपयोग करें जब आपके स्रोत और लक्ष्य दोनों vCard (VCF) फ़ाइलें हों और आपको Outlook/MAPI सुविधाओं की आवश्यकता न हो। यह सीधे VCF पढ़ता और लिखता है, vCard 2.1/3.0/4.0 को सपोर्ट करता है, फ़ाइल में कई संपर्क, और असिंक्रोनस लोडिंग।
- MapiContact (नेमस्पेस
Aspose.Email.Mapi) — एक Outlook संपर्क। इसे उपयोग करें जब आप MSG/PST के साथ काम कर रहे हों या MAPI-विशिष्ट प्रॉपर्टीज़ की आवश्यकता हो।MapiContactVCF से आयात और निर्यात भी कर सकता है अपनेFromVCardऔरSaveविधियों पर (देखें Outlook संपर्क प्रबंधन).
इस लेख का शेष भाग केंद्रित है VCardContact.
एक vCard बनाएं और उसे सहेजें
यह VCardContact क्लास में पैरामीटर रहित कन्स्ट्रक्टर है और स्ट्रॉन्गली-टाइप्ड प्रॉपर्टी सेट्स को उजागर करता है जैसे IdentificationInfo, संस्था, ईमेल्स, TelephoneNumbers, and DeliveryAddresses.
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे एक संपर्क को शून्य से बनाकर vCard (VCF) फ़ाइल के रूप में सहेजा जाए।
using Aspose.Email.PersonalInfo.VCard;
var contact = new VCardContact
{
IdentificationInfo = new VCardIdentificationInfo
{
DisplayName = "Bertha Buell",
FullName = "Bertha A. Buell",
Nickname = "Bertie",
Birthday = new DateTime(1980, 5, 20)
},
Organization = new VCardOrganization
{
Organization = "Awthentikz",
Title = "Social work assistant"
},
Emails = new VCardEmailCollection
{
new VCardEmail
{
EmailAddress = "BerthaABuell@example.com",
EmailType = VCardEmailType.INTERNET
}
}
};
// Save as a vCard (VCF) file
contact.Save("contact.vcf");
संपर्क प्रॉपर्टी मॉडल
उपरोक्त नाम और ईमेल के अलावा, एक VCardContact पूरे vCard डेटा मॉडल को स्ट्रॉन्गली-टाइप्ड प्रॉपर्टी सेट्स के माध्यम से उजागर करता है। नीचे के स्निपेट्स मॉडल को विस्तारित करते हैं contact पहले बनाए गए। प्रत्येक संग्रह को एक संग्रह इनिशियलाइज़र के साथ असाइन किया जा सकता है या इसके साथ जोड़ा जा सकता है Add.
डाक पते
डाक पते यहाँ रहते हैं DeliveryAddresses संग्रह के रूप में VCardDeliveryAddress आइटम्स। इस AddressType प्रॉपर्टी एक संयोजन लेती है VCardDeliveryAddressType फ़्लैग्स (HOME, WORK, POSTAL, PARCEL, DOM, INTL, PREF).
contact.DeliveryAddresses = new VCardDeliveryAddressCollection
{
new VCardDeliveryAddress
{
AddressType = VCardDeliveryAddressType.WORK | VCardDeliveryAddressType.PREF,
Street = "4 Darwinia Loop",
Locality = "Eighty Mile Beach",
Region = "WA",
PostalCode = "6725",
CountryName = "Australia"
}
};
फ़ोन नंबर
फ़ोन नंबर यहाँ रहते हैं TelephoneNumbers संग्रह के रूप में VCardTelephoneNumber आइटम्स। इस TelephoneType प्रॉपर्टी एक संयोजन लेती है VCardTelephoneType फ़्लैग्स (VOICE, WORK, HOME, CELL, FAX, PAGER, PREF, और अधिक)।
contact.TelephoneNumbers = new VCardTelephoneNumberCollection
{
new VCardTelephoneNumber
{
TelephoneNumber = "(08) 9080 1183",
TelephoneType = VCardTelephoneType.WORK | VCardTelephoneType.VOICE
},
new VCardTelephoneNumber
{
TelephoneNumber = "(925) 599 3355",
TelephoneType = VCardTelephoneType.CELL
}
};
भौगोलिक स्थिति
यह Geo प्रॉपर्टी एक वैश्विक स्थान को संग्रहीत करती है float अक्षांश और देशांतर।
contact.Geo = new VCardGeo
{
Latitude = 48.858844f,
Longitude = 2.294351f
};
फ़ोटो
एक संपर्क फोटो सेट किया जाता है IdentificationInfo.Photo के रूप में एक VCardPhoto. यह इमेज बाइट्स से इनलाइन एम्बेडेड या URL द्वारा संदर्भित हो सकता है। इमेज फ़ॉर्मेट दिया गया है VCardPhotoType और स्टोरेज मोड द्वारा VCardValueLocation.
// Embed the image bytes inline
contact.IdentificationInfo.Photo = new VCardPhoto
{
Data = File.ReadAllBytes("portrait.jpg"),
PhotoType = VCardPhotoType.JPEG,
ValueLocation = VCardValueLocation.INLINE
};
// Or reference an external image by URL
contact.IdentificationInfo.Photo = new VCardPhoto
{
Uri = "https://example.com/portrait.jpg",
PhotoType = VCardPhotoType.JPEG,
ValueLocation = VCardValueLocation.URL
};
स्वरूपित पता लेबल
लेबल एक स्वरूपित, प्रिंट-तैयार डिलीवरी पता पाठ है। लेबल्स यहाँ रहते हैं लेबल्स संग्रह के रूप में VCardLabel आइटम्स, प्रत्येक को एक पते के प्रकार के साथ टैग किया गया है।
contact.Labels = new VCardLabelCollection
{
new VCardLabel
{
AddressType = VCardDeliveryAddressType.WORK,
Address = "4 Darwinia Loop\r\nEighty Mile Beach WA 6725\r\nAustralia"
}
};
मॉडल को फिर से पढ़ें
vCard लोड करने के बाद, वही प्रॉपर्टी सेट्स पार्स किए गए डेटा को प्रकट करते हैं।
var loaded = VCardContact.Load("contact.vcf");
Console.WriteLine(loaded.IdentificationInfo?.DisplayName);
foreach (var address in loaded.DeliveryAddresses)
{
Console.WriteLine($"{address.AddressType}: {address.Street}, {address.Locality}");
}
foreach (var phone in loaded.TelephoneNumbers)
{
Console.WriteLine($"{phone.TelephoneType}: {phone.TelephoneNumber}");
}
if (loaded.Geo != null)
{
Console.WriteLine($"Geo: {loaded.Geo.Latitude}, {loaded.Geo.Longitude}");
}
सुरक्षा (सार्वजनिक कुंजी या प्रमाणपत्र)
यह सुरक्षा प्रॉपर्टी सार्वजनिक कुंजी या प्रमाणीकरण प्रमाणपत्र को प्रकट करता है जो vCard में संग्रहीत है (यह KEY प्रॉपर्टी)। इसका SaveToPEM विधि उस कुंजी को PEM फ़ाइल में लिखती है।
var signed = VCardContact.Load("signed.vcf");
if (signed.Security != null && signed.Security.Key != null)
{
Console.WriteLine("Key type: " + signed.Security.Type);
// Export the embedded public key / certificate to a PEM file
signed.Security.SaveToPEM("public-key.pem");
}
vCard लोड करें
स्थिर का उपयोग करें VCardContact.Load विधि जो फ़ाइल या स्ट्रीम से vCard पढ़ती है। लोड होने के बाद, संपर्क की प्रॉपर्टीज़ उसी प्रॉपर्टी सेट्स के माध्यम से उपलब्ध होती हैं जिसका उपयोग इसे बनाते समय किया गया था।
// Load from a file
var contact = VCardContact.Load("contact.vcf");
Console.WriteLine(contact.IdentificationInfo.DisplayName);
// Load from a stream
using (var stream = File.OpenRead("contact.vcf"))
{
var fromStream = VCardContact.Load(stream);
}
विशिष्ट एन्कोडिंग के साथ लोड करें
पढ़ते समय प्रयुक्त टेक्स्ट एन्कोडिंग को नियंत्रित करने के लिए, एक VCardLoadOptions ऑब्जेक्ट जिसके साथ उसका PreferredEncoding प्रॉपर्टी सेट।
var loadOptions = new VCardLoadOptions { PreferredEncoding = Encoding.UTF8 };
var contact = VCardContact.Load("contact.vcf", loadOptions);
एकल फ़ाइल से कई संपर्क पढ़ें
एक vCard फ़ाइल में एक से अधिक संपर्क हो सकते हैं। स्थिर का उपयोग करें IsMultiContacts विधि यह जांचने के लिए कि फ़ाइल या स्ट्रीम में कई संपर्क हैं या नहीं, और LoadAsMultiple सभी को एक List<VCardContact>. दोनों विधियों में फ़ाइल, स्ट्रीम, और लोड-ऑप्शन ओवरलोड्स हैं:
static bool IsMultiContacts(string filePath)/IsMultiContacts(Stream stream)static List<VCardContact> LoadAsMultiple(string filePath)/LoadAsMultiple(string filePath, VCardLoadOptions options)static List<VCardContact> LoadAsMultiple(Stream stream)/LoadAsMultiple(Stream stream, VCardLoadOptions options)
using (var stream = new FileStream("contacts.vcf", FileMode.Open, FileAccess.Read))
{
if (VCardContact.IsMultiContacts(stream))
{
List<VCardContact> contacts = VCardContact.LoadAsMultiple(stream);
foreach (var contact in contacts)
{
Console.WriteLine(contact.IdentificationInfo.DisplayName);
}
}
}
संपर्कों को असिंक्रोनस रूप से लोड करें
बड़े संपर्क सूचियों या I/O-आधारित अनुप्रयोगों (डेस्कटॉप, वेब, या मोबाइल) के लिए, VCardContact असिंक्रोनस लोडिंग प्रदान करता है जो कॉलिंग थ्रेड को ब्लॉक नहीं करता। उपयोग करें LoadAsync एकल संपर्क के लिए और LoadAsMultipleAsync कई के लिए। दोनों एक CancellationToken.
// A single contact
var contact = await VCardContact.LoadAsync("contact.vcf", CancellationToken.None);
Console.WriteLine(contact.IdentificationInfo.DisplayName);
// Multiple contacts
var contacts = await VCardContact.LoadAsMultipleAsync(
"contacts.vcf", new VCardLoadOptions(), CancellationToken.None);
foreach (var loaded in contacts)
{
Console.WriteLine(loaded.IdentificationInfo.DisplayName);
}
सेव विकल्प
यह VCardSaveOptions क्लास यह निर्धारित करती है कि संपर्क कैसे लिखा जाए:
- Version — आउटपुट vCard संस्करण जिससे VCardVersion इनोमरेशन:
V21(vCard 2.1, डिफ़ॉल्ट),V30(3.0), याV40(4.0)। - PreferredTextEncoding — फ़ाइल लिखते समय उपयोग किया गया एन्कोडिंग।
- UseExtensions — क्या विस्तारित (
X-) प्रॉपर्टीज़ लिखी जा सकती हैं। डिफ़ॉल्ट हैtrue. ProductId— मान जो लिखे गए हैंPRODIDप्रॉपर्टी।
var contact = VCardContact.Load("contact.vcf");
var saveOptions = new VCardSaveOptions
{
Version = VCardVersion.V30, // write vCard 3.0 (default is V21)
PreferredTextEncoding = Encoding.UTF8, // encoding used when writing
UseExtensions = true, // allow extended (X-) properties
ProductId = "My Company" // PRODID value
};
contact.Save("contact_v3.vcf", saveOptions);
साथ ही देखें
- Outlook संपर्क प्रबंधन — Outlook बनाएं, सहेजें, और पढ़ें
MapiContactआइटम्स, जिसमें VCF आयात और निर्यात शामिल हैं। - PST फ़ाइलों में संपर्कों का प्रबंधन — PST के अंदर संपर्कों को संग्रहीत और पढ़ें।