Работа с контактами Outlook

Создание контакта Outlook

Aspose.Email для Java поддерживает создание контактов Outlook (VCards) с использованием класса MapiContact. MapiContact содержит множество методов, некоторые из которых приведены ниже.

Структура контакта в Aspose.Email для Java

Ниже представлена иерархия, реализованная для контактов в Aspose.Email для Java. Соответствующее имя класса указано напротив каждого свойства. Гиперссылки предоставлены для онлайн-документации для дальнейшего изучения.

  1. Contact (MapiContact)
    1. Электронные адреса (MapiContactElectronicAddressPropertySet)
      1. Email1 (MapiContactElectronicAddress)
        1. Тип адреса
        2. Имя для отображения
        3. Электронный адрес
        4. Номер факса
      2. Email2
      3. Email3
      4. Домашний факс
      5. Основной факс
      6. Факс для бизнеса
    2. События (MapiContactEventPropertySet). Ниже приведен пример того, как установить события.
      1. День рождения
      2. Юбилей свадьбы
    3. Информация о имени (MapiContactNamePropertySet)
      1. Имя для отображения
      2. Префикс имени для отображения
      3. Файл под
      4. ID файла
      5. Поколение
      6. Имя
      7. Инициал(ы)
      8. Отчество
      9. Псевдоним
      10. Фамилия
    4. Личная информация (MapiContactPersonalInfoPropertySet)
      1. Учетная запись
      2. Веб-страница бизнеса
      3. Имя компьютерной сети
      4. ID клиента
      5. Свободное местоположение бизнеса
      6. FTP сайт
      7. Пол
      8. Номер удостоверения личности
      9. Хобби
      10. HTML
      11. Адрес мгновенных сообщений
      12. Язык
      13. Местоположение
      14. Заметки
      15. Номер организационного удостоверения
      16. Личная веб-страница
      17. Рекомендованное имя
      18. Имя супруга
    5. Физический адрес (MapiContactPhysicalAddressPropertySet)
      1. Домашний адрес (MapiContactPhysicalAddress)
        1. Адрес
        2. Город
        3. Страна
        4. Код страны
        5. Почтовый индекс
        6. Почтовый ящик
        7. Штат или провинция
      2. Другой адрес
      3. Рабочий адрес
    6. Профессиональная информация
      1. Ассистент
      2. Название компании
      3. Название отдела
      4. Имя менеджера
      5. Местоположение офиса
      6. Профессия
      7. Должность
    7. Телефоны (MapiContactTelephonePropertySet)
      1. Номер телефона ассистента
      2. Номер телефона для бизнеса2
      3. Номер телефона для бизнеса
      4. Номер телефона для обратного вызова
      5. Номер телефона автомобиля
      6. Основной номер телефона компании
      7. Номер телефона для дома2
      8. Номер телефона для дома
      9. Номер ISDN
      10. Номер мобильного телефона
      11. Другой номер телефона
      12. Номер пейджера
      13. Основной номер телефона
      14. Номер радиотелефона
      15. Номер телекса
      16. Номер телефона TTY/TDD

Следующий код использует Aspose.Email для создания контакта Outlook и заполняет его именем, профессиональными свойствами, физическим адресом и электронной почтой. Также показано как добавить MapiContactEventPropertySet к контакту.

todo:image_alt_text
Рисунок: Контакт Microsoft Outlook, закодированный с помощью Aspose.Email
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiContact contact = new MapiContact();
//Set different properties of this Contact Item.
//Set Name properties using MapiContactNamePropertySet
MapiContactNamePropertySet NamePropSet = new MapiContactNamePropertySet();
NamePropSet.setSurname("Mellissa");
NamePropSet.setGivenName("MacBeth");
contact.setNameInfo(NamePropSet);
//Set professional properties using MapiContactProfessionalPropertySet
MapiContactProfessionalPropertySet ProfPropSet = new MapiContactProfessionalPropertySet();
ProfPropSet.setTitle("Account Representative");
ProfPropSet.setCompanyName("Contoso Ltd.");
ProfPropSet.setOfficeLocation("36/2529");
contact.setProfessionalInfo(ProfPropSet);
//Telephones
MapiContactTelephonePropertySet Telephone = new MapiContactTelephonePropertySet();
Telephone.setAssistantTelephoneNumber("(831) 758-7214");
Telephone.setBusiness2TelephoneNumber("(831) 759-2518");
Telephone.setBusinessTelephoneNumber("(831) 758-7285");
Telephone.setCallbackTelephoneNumber("(831) 758-7321 (After hours");
Telephone.setCarTelephoneNumber("(831) 758-7201");
Telephone.setCompanyMainTelephoneNumber("(831) 758-7368");
Telephone.setHome2TelephoneNumber("(831) 758-7256");
Telephone.setHomeTelephoneNumber("(831) 758-7257");
Telephone.setIsdnNumber("(831) 758-7381");
Telephone.setMobileTelephoneNumber("(831) 758-7368");
Telephone.setOtherTelephoneNumber("(831) 758-7201");
Telephone.setPagerTelephoneNumber("(831) 758-7368");
Telephone.setPrimaryTelephoneNumber("(831) 758-7334");
Telephone.setRadioTelephoneNumber("(831) 758-7234");
Telephone.setTelexNumber("(831) 758-7408");
Telephone.setTtyTddPhoneNumber("(800) 806-4474");
contact.setTelephones(Telephone);
//Set Physical Address using MapiContactPhysicalAddress and MapiContactPhysicalAddressPropertySet
MapiContactPhysicalAddress PhysAddrss = new MapiContactPhysicalAddress();
PhysAddrss.setPostOfficeBox("144 Hitchcock Rd, Salinas, CA 93908");
MapiContactPhysicalAddressPropertySet PhysAddrPropSet = new MapiContactPhysicalAddressPropertySet();
PhysAddrPropSet.setWorkAddress(PhysAddrss);
contact.setPhysicalAddresses(PhysAddrPropSet);
//Set email information using MapiContactElectronicAddress and MapiContactElectronicAddressPropertySet
MapiContactElectronicAddress email = new MapiContactElectronicAddress();
email.setAddressType("SMTP");
email.setDisplayName("Melissa MacBeth (mellissa@contoso.com)");
email.setEmailAddress("melissa@contoso.com");
MapiContactElectronicAddressPropertySet ElecAddrPropSet = new MapiContactElectronicAddressPropertySet();
ElecAddrPropSet.setEmail1(email);
contact.setElectronicAddresses(ElecAddrPropSet);
contact.save(dataDir + "OutlookContact_out.vcf", ContactSaveFormat.VCard);

Добавление информации о событиях контакта в MapiContact

Microsoft Outlook позволяет пользователям добавлять информацию о событиях к контакту. Событие содержит день рождения и юбилей свадьбы. Aspose.Email предоставляет класс MapiContactEventPropertySet для добавления этой информации к контакту. Это подробно описано в следующем примере.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.set(1990, Calendar.NOVEMBER, 1, 0, 0, 0);
Date birthday = calendar.getTime();
calendar.set(2012, Calendar.NOVEMBER, 1, 0, 0, 0);
Date weddingDay = calendar.getTime();
MapiContactEventPropertySet contactEventSet = new MapiContactEventPropertySet();
contactEventSet.setBirthday(birthday);
contactEventSet.setWeddingAnniversary(weddingDay);
MapiContact contact = new MapiContact();
contact.setEvents(contactEventSet);
contact.save(dataDir + "Contact_out.msg", ContactSaveFormat.Msg);

Создание, сохранение и чтение контактов Outlook

Aspose.Email позволяет разработчикам создавать контакты Microsoft Outlook, а также электронные сообщения. Класс MapiContact предоставляет все свойства контакта, необходимые для создания контакта Outlook. В этой статье показано, как создать, сохранить и прочитать контакт Outlook с помощью класса MapiContact.

Создайте и сохраните MapiContact

Следующие шаги можно использовать для создания и сохранения контакта на диске:

  1. Создайте новый объект класса MapiContact.
  2. Введите информацию, связанную с различными свойствами контакта.
  3. Добавьте фотоданные к контакту, если есть.
  4. Сохраните контакт в формате MSG или VCard.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiContact contact = new MapiContact("Sebastian Wright", "SebastianWright@dayrep.com");
contact.setNameInfo(new MapiContactNamePropertySet("Bertha", "A.", "Buell"));
contact.setProfessionalInfo(new MapiContactProfessionalPropertySet("Awthentikz", "Social work assistant"));
contact.getPersonalInfo().setPersonalHomePage("B2BTies.com");
contact.getPhysicalAddresses().getWorkAddress().setAddress("Im Astenfeld 59 8580 EDELSCHROTT");
contact.getElectronicAddresses().setEmail1(new MapiContactElectronicAddress("Experwas", "SMTP", "BerthaABuell@armyspy.com"));
contact.setTelephones(new MapiContactTelephonePropertySet("06605045265"));
//Set Photo Data
File fi = new File(dataDir + "Desert.jpg");
byte[] fileContent = Files.readAllBytes(fi.toPath());
MapiContactPhoto photo = new MapiContactPhoto(fileContent, MapiContactPhotoImageFormat.Jpeg);
contact.setPhoto(photo);
//Save as MSG
contact.save(dataDir + "Contact_out.msg", ContactSaveFormat.Msg);

Сохранение контакта в формате VCF версии 3

Чтобы сохранить контакт в формате VCF версии 3, используйте перечисление VCardVersion для установки свойства VCardSaveOptions.Version. Следующий пример кода демонстрирует использование перечисления VCardVersion для сохранения контакта в формате VCF версии 3.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the resource directory.
String dataDir = Utils.getSharedDataDir(DistributionList.class) + "outlook/";
MapiContact contact = new MapiContact();
contact.setNameInfo(new MapiContactNamePropertySet("Jane", "A.", "Buell"));
contact.setProfessionalInfo(new MapiContactProfessionalPropertySet("Aspose Pty Ltd", "Social work assistant"));
contact.getPersonalInfo().setPersonalHomePage("Aspose.com");
contact.getElectronicAddresses().setEmail1(new MapiContactElectronicAddress("test@test.com"));
contact.getTelephones().setHomeTelephoneNumber("06605040000");
VCardSaveOptions opt = new VCardSaveOptions();
opt.setVersion(VCardVersion.V30);
contact.save(dataDir + "V30.vcf", opt);

Чтение MapiContact

Класс MapiContact может использоваться для загрузки как файлов MSG Microsoft Outlook, так и контактов формата VCard. Следующие примеры кода показывают, как загрузить контакты Outlook, сохраненные в формате MSG и VCF, в MapiContact.

Загрузка контакта из MSG

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiMessage msg = MapiMessage.fromFile(dataDir + "messageMapi.msg");
MapiContact mapiContact = (MapiContact) msg.toMapiMessageItem();

Загрузка контакта из VCard

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiContact mapiContact = MapiContact.fromVCard(dataDir + "microsoft.vcf");

Загрузка VCard контакта с заданной кодировкой

Поддерживаемый метод: MapiContact.fromVCard(String, Encoding)

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MapiContact contactReadFromFile = MapiContact.fromVCard( "microsoft.vcf", StandardCharsets.UTF_8);

Отображение информации о контакте в MHTML

Контакт Outlook можно преобразовать в MHTML с помощью API Aspose.Email. Этот пример показывает, как VCard загружается в MapiContact и затем преобразуется в MHTML с помощью API MailMessage.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
String dataDir = Utils.getSharedDataDir(RenderingContactInformationToMhtml.class) + "outlook/";
//Load VCF Contact and convert to MailMessage for rendering to MHTML
MapiContact contact = MapiContact.fromVCard(dataDir + "ContactsSaqib Razzaq.vcf");
ByteArrayOutputStream os = new ByteArrayOutputStream();
contact.save(os, ContactSaveFormat.Msg);
MapiMessage msg = MapiMessage.fromStream(new ByteArrayInputStream(os.toByteArray()));
MailConversionOptions op = new MailConversionOptions();
MailMessage eml = msg.toMailMessage(op);
//Prepare the MHT format options
MhtSaveOptions mhtSaveOptions = new MhtSaveOptions();
mhtSaveOptions.setCheckBodyContentEncoding(true);
mhtSaveOptions.setPreserveOriginalBoundaries(true);
mhtSaveOptions.setMhtFormatOptions(MhtFormatOptions.RenderVCardInfo | MhtFormatOptions.WriteHeader);
mhtSaveOptions.setRenderedContactFields(ContactFieldsSet.NameInfo | ContactFieldsSet.PersonalInfo | ContactFieldsSet.Telephones | ContactFieldsSet.Events);
eml.save(dataDir + "ContactsSaqib Razzaq_out.mhtml", mhtSaveOptions);
System.out.println("Execution Completed.");