Zarządzanie kontaktami Outlook
Podobnie jak MapiMessage, Aspose.Email pozwala tworzyć kontakty Outlook. MapiContact klasa dostarcza wszystkie właściwości kontaktu potrzebne do stworzenia kontaktu Outlook. Ten artykuł pokazuje, jak tworzyć, zapisywać i odczytywać kontakt Outlook przy użyciu MapiContact klasa.
Utwórz i zapisz kontakt Outlook
Aby utworzyć kontakt i zapisać go na dysku:
- Utwórz nową instancję obiektu MapiContact klasa.
- Wprowadź informacje właściwości kontaktu.
- Dodaj dane zdjęcia (jeśli istnieją).
- Zapisz kontakt w formacie MSG lub VCard.
Poniższy fragment kodu pokazuje, jak utworzyć i zapisać kontakt Outlook.
Zapis list dystrybucyjnych MAPI do plików VCF
Poniższy przykład kodu demonstruje, jak zapisać listę dystrybucyjną do wielokontaktowego pliku 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);
Konwersja wielokontaktowych plików VCF do MapiDistributionList
Aspose.Email obsługuje konwersję wielokontaktowych plików VCF do MapiDistributionList obiektów, co ułatwia zarządzanie i importowanie wielu kontaktów bezpośrednio do aplikacji. Funkcję tę można uzyskać za pośrednictwem następujących metod statycznych w MapiDistributionList klasa:
- static MapiDistributionList FromVCF(string filePath)
- static MapiDistributionList FromVCF(Stream stream)
Poniższy przykład kodu demonstruje, jak używać tej funkcji:
// Convert a multi-contact VCF file to a MapiDistributionList
MapiDistributionList dlist = MapiDistributionList.FromVCF(fileName);
Zapisz kontakty w formacie VCF
Aby zapisać kontakt w formacie VCF wersja 3, użyj VCardVersion enumerację służącą do ustawienia VCardSaveOptions.Version właściwość. Poniższy przykładowy kod demonstruje użycie VCardVersion enumerable do zapisu kontaktu w formacie VCF wersja 3:
var options = new MapiDistributionListSaveOptions(ContactSaveFormat.VCard);
options.Version = VCardVersion.V30;
dlist.Save("distribution_list.vcf", options);
Odczyt kontaktów MAPI
Ten MapiContact klasa może być użyta do wczytywania kontaktów w formacie Outlook MSG i VCard. Poniższy fragment kodu pokazuje, jak wczytać kontakty Outlook zapisane jako MSG i VCF do MapiContact.
Wczytaj kontakty z plików MSG
Poniższy fragment kodu pokazuje, jak wczytać kontakty z MSG.
Wczytaj kontakty z plików VCard
Poniższy fragment kodu pokazuje, jak wczytać kontakty z VCard.
Wczytaj kontakty MAPI z vCard z własnymi opcjami
Aby zapewnić większą elastyczność przy konwertowaniu plików vCard (.vcf) na kontakty MAPI, Aspose.Email dla .NET udostępnia przeciążenie MapiContact.FromVCard(string filePath, VCardLoadOptions options) metoda przyjmująca VCardLoadOptions obiekt. Oferuje większą kontrolę nad interpretacją plików vCard — szczególnie przy pracy z różnymi formatami vCard, kodowaniami lub zaawansowanymi scenariuszami parsowania.
Poniższy przykład kodu demonstruje, jak wczytać plik kontaktowy .vcf do MapiContact obiekt przy użyciu przeciążenia, które przyjmuje VCardLoadOptions. Wczytany kontakt może być następnie użyty w plikach PST, eksporcie MSG lub innych formatach zgodnych z Outlookiem.
var mapiContact = MapiContact.FromVCard("contact.vcf", new VCardLoadOptions());
Console.WriteLine(mapiContact.NameInfo.DisplayName);
Wczytaj kontakty z VCard z określonym kodowaniem
Poniższy fragment kodu pokazuje, jak wczytać kontakty z VCard przy użyciu określonego kodowania.
Zapisz elementy kontaktowe VCard z określonym kodowaniem
Dostosuj zachowanie zapisu przy pracy z plikami VCard używając VCardSaveOptions klasa. Ta PreferredTextEncoding właściwość klasy określi kodowanie używane przy zapisie elementów kontaktowych VCard.
Poniższy przykład kodu pokazuje, jak zaimplementować tę właściwość w projekcie:
var cont = VCardContact.Load(fileName, Encoding.UTF8);
var opt = new VCardSaveOptions();
opt.PreferredTextEncoding = Encoding.UTF8;
cont.Save("my.vcard", opt);
Zapisz pliki VCard z polami rozszerzonymi
Ten UseExtensions właściwość pozwala kontrolować, czy przy zapisie plików vCard mogą być używane pola rozszerzone. Gdy ustawiona na true (domyślnie), rozszerzenia są dozwolone, zapewniając kompatybilność z niestandardowymi polami i dodatkowymi informacjami kontaktowymi.
Odczytaj wiele kontaktów w formacie VCard
Nasza biblioteka umożliwia uzyskanie listy wszystkich kontaktów z pliku VCard. Można to zrobić przy użyciu następujących metod i kroków:
// 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)
Poniższy fragment kodu demonstruje, jak obsłużyć pliki VCard zawierające wiele kontaktów:
using (FileStream stream = new FileStream("test.vcf", FileMode.Open, FileAccess.Read))
{
if(VCardContact.IsMultiContacts(stream))
{
List<VCardContact> contacts = VCardContact.LoadAsMultiple(stream, Encoding.UTF8);
}
}
Asynchroniczne wczytywanie kontaktów vCard
Ten VCardContact klasa w Aspose.Email dla .NET obsługuje asynchroniczne ładowanie plików vCard. Pozwala to aplikacjom efektywnie czytać pojedyncze lub wielokrotne kontakty z plików .vcf lub strumieni bez blokowania głównego wątku — idealne dla nowoczesnych aplikacji desktopowych, webowych lub mobilnych pracujących z dużymi listami kontaktów. Następujące metody tej klasy mogą wykonać zadanie:
-
LoadAsync -
LoadAsMultipleAsync
Poniższy przykład kodu demonstruje, jak asynchronicznie wczytać wiele kontaktów vCard z pliku .vcf przy użyciu VCardContact.LoadAsMultipleAsync. Wczytane kontakty są przetwarzane w pętli, wypisując nazwę wyświetlaną każdego kontaktu w konsoli. Asynchroniczne podejście zapewnia, że aplikacja pozostaje responsywna, nawet przy odczycie dużych plików.
var contacts = await VCardContact.LoadAsMultipleAsync("contacts.vcf", new VCardLoadOptions(), CancellationToken.None);
foreach (var contact in contacts)
{
Console.WriteLine(contact.IdentificationInfo.DisplayName);
}
Renderuj informacje kontaktu do MHTML
Kontakt Outlook można przekształcić do MHTML przy użyciu API Aspose.Email. Ten przykład pokazuje, jak VCard jest wczytywany do MapiContact a następnie skonwertowano do MHTML przy pomocy 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);