Trabajando con Contactos de Outlook

Crear Contacto de Outlook

Aspose.Email para Java soporta la creación de contactos de Outlook (VCards) utilizando la clase MapiContact. MapiContact contiene muchos métodos, algunos de los cuales se indican a continuación.

Estructura de Contacto en Aspose.Email para Java

A continuación se muestra la jerarquía implementada para contactos en Aspose.Email para Java. El nombre de la clase relevante se indica junto a cada propiedad. Se proporcionan hipervínculos a la documentación en línea para referencia adicional.

  1. Contact (MapiContact)
    1. Direcciones Electrónicas (MapiContactElectronicAddressPropertySet)
      1. Email1 (MapiContactElectronicAddress)
        1. Tipo de Dirección
        2. Nombre para Mostrar
        3. Dirección de Correo Electrónico
        4. Número de Fax
      2. Email2
      3. Email3
      4. Fax en Casa
      5. Fax Primario
      6. Fax de Negocios
    2. Eventos (MapiContactEventPropertySet). A continuación se muestra un ejemplo de cómo establecer eventos.
      1. Cumpleaños
      2. Aniversario de Boda
    3. Información del Nombre (MapiContactNamePropertySet)
      1. Nombre para Mostrar
      2. Prefijo del Nombre para Mostrar
      3. Archivo Bajo
      4. Archivo Bajo ID
      5. Generación
      6. Nombre de Pila
      7. Iniciales
      8. Segundo Nombre
      9. Apodo
      10. Apellido
    4. Información Personal (MapiContactPersonalInfoPropertySet)
      1. Cuenta
      2. Página de Inicio de Negocios
      3. Nombre de Red de Computadora
      4. ID del Cliente
      5. Ubicación de Negocios Libre
      6. Sitio FTP
      7. Género
      8. Número de Identificación del Gobierno
      9. Pasatiempos
      10. HTML
      11. Dirección de Mensajería Instantánea
      12. Idioma
      13. Ubicación
      14. Notas
      15. Número de Identificación Organizacional
      16. Página de Inicio Personal
      17. Referido por Nombre
      18. Nombre del Cónyuge
    5. Dirección Física (MapiContactPhysicalAddressPropertySet)
      1. Dirección de Casa (MapiContactPhysicalAddress)
        1. Dirección
        2. Ciudad
        3. País
        4. Código del País
        5. Código Postal
        6. Apartado de Correos
        7. Estado o Provincia
      2. Otra Dirección
      3. Dirección de Trabajo
    6. Información Profesional
      1. Asistente
      2. Nombre de la Empresa
      3. Nombre del Departamento
      4. Nombre del Gerente
      5. Ubicación de la Oficina
      6. Profesión
      7. Título
    7. Teléfonos (MapiContactTelephonePropertySet)
      1. Número de Teléfono del Asistente
      2. Número de Teléfono de Negocios2
      3. Número de Teléfono de Negocios
      4. Número de Teléfono de Callback
      5. Número de Teléfono del Automóvil
      6. Número de Teléfono Principal de la Empresa
      7. Número de Teléfono de Casa2
      8. Número de Teléfono de Casa
      9. Número ISDN
      10. Número de Teléfono Móvil
      11. Otro Número de Teléfono
      12. Número de Teléfono de Buscador
      13. Número de Teléfono Primario
      14. Número de Teléfono de Radio
      15. Número de Telex
      16. Número de Teléfono TTY/TDD

El siguiente código utiliza Aspose.Email para crear un contacto de Outlook y lo llena con nombre, propiedades profesionales, dirección física y correo electrónico. También muestra cómo agregar MapiContactEventPropertySet al contacto.

todo:image_alt_text
Figura: Un contacto de Microsoft Outlook codificado con 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);

Agregar Información de Evento de Contacto a un MapiContact

Microsoft Outlook permite a los usuarios agregar información de eventos a un contacto. El evento contiene el cumpleaños y el aniversario de boda. Aspose.Email proporciona la clase MapiContactEventPropertySet para agregar esta información a un contacto. Esto se elabora en el siguiente ejemplo.

// 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);

Crear, Guardar y Leer Contactos de Outlook

Aspose.Email permite a los desarrolladores crear contactos de Microsoft Outlook así como mensajes de correo electrónico. La clase MapiContact proporciona todas las propiedades de contacto necesarias para crear un contacto de Outlook. Este artículo muestra cómo crear, guardar y leer un contacto de Outlook utilizando la clase MapiContact.

Crear y Guardar un MapiContact

Los siguientes pasos se pueden usar para crear y guardar un contacto en disco:

  1. Instanciar un nuevo objeto de la clase MapiContact.
  2. Ingresar información relacionada con varias propiedades del contacto.
  3. Agregar datos de foto al contacto, si los hay.
  4. Guardar el contacto en formato MSG o 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);

Guardar Contacto en Formato VCF Versión 3

Para guardar el contacto en formato VCF versión 3, use el enumerable VCardVersion para establecer la propiedad VCardSaveOptions.Version. El siguiente código de ejemplo demuestra el uso del enumerable VCardVersion para guardar el contacto en formato VCF versión 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);

Leer un MapiContact

La clase MapiContact se puede utilizar para cargar tanto archivos MSG de Microsoft Outlook como contactos en formato VCard. Los siguientes ejemplos de código muestran cómo cargar contactos de Outlook guardados como MSG y VCF en MapiContact.

Cargar un Contacto desde 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();

Cargar un Contacto desde 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");

Cargar Contacto VCard con Codificación Especificada

Método Soportado: 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);

Renderizando Información de Contacto a MHTML

El contacto de Outlook puede ser convertido a MHTML utilizando la API de Aspose.Email. Este ejemplo muestra cómo se carga un VCard en MapiContact y luego se convierte a MHTML con la ayuda de la 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.");