Zarządzanie kontaktami Outlook
Ten artykuł opisuje samodzielne elementy Outlook MapiContact elementy zapisane jako MSG lub vCard (VCF). Dla formatu neutralnego VCardContact klasę, która odczytuje i zapisuje pliki vCard bezpośrednio, zobacz Praca z plikami vCard (VCF). Aby przechowywać i odczytywać kontakty wewnątrz PST, zobacz Zarządzanie kontaktami w plikach PST.
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.
// 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);
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 `MapiDistributionList` 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 wyliczenia, aby ustawić VCardSaveOptions.Version właściwość. Poniższy przykładowy kod demonstruje użycie VCardVersion wyliczenia, aby zapisać kontakt 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.
MapiMessage msg = MapiMessage.FromFile(dataDir + "Contact.msg");
MapiContact contact = (MapiContact)msg.ToMapiMessageItem();
Console.WriteLine(contact.NameInfo.DisplayName);
Wczytaj kontakty z plików VCard
Poniższy fragment kodu pokazuje, jak wczytać plik vCard do MapiContact używając FromVCard metodę. Aby wczytać vCard do VCardContact zamiast tego, zobacz Praca z plikami vCard (VCF).
MapiContact contact = MapiContact.FromVCard(dataDir + "Contact.vcf");
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
Kodowanie pliku vCard jest określane przez PreferredEncoding właściwość VCardLoadOptions klasa. Poniższy fragment kodu pokazuje, jak wczytać kontakty z VCard przy użyciu określonego kodowania.
var loadOptions = new VCardLoadOptions { PreferredEncoding = Encoding.UTF8 };
var contactReadFromFile = MapiContact.FromVCard(dataDir + @"Contact.vcf", loadOptions);
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.
Poniższy przykład kodu pokazuje, jak wyłączyć rozszerzone pola przy zapisywaniu kontaktu:
var contact = MapiContact.FromVCard("contact.vcf");
var options = new VCardSaveOptions
{
UseExtensions = false
};
contact.Save("contact_out.vcf", options);
Praca z plikami vCard bezpośrednio
Odczyt i zapis plików vCard (VCF) przy użyciu formatu neutralnego VCardContact klasa — ładowanie pojedynczych lub wielu kontaktów, wybór kodowania tekstu, zapisywanie w określonej wersji vCard oraz asynchroniczne ładowanie — jest opisane w osobnym artykule: Praca z plikami vCard (VCF).
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);
Zobacz także
- Praca z plikami vCard (VCF) — odczytywać i zapisywać pliki vCard bezpośrednio przy użyciu
VCardContactklasa. - Zarządzanie kontaktami w plikach PST — przechowywać i odczytywać kontakty w PST.