Guía de desarrollo

Local Navigation

Recuperar contenido HTML de un mensaje de correo electrónico

En la tarea siguiente, puede aparecer una excepción al invocar el método Transport.more().

  1. Importe las clases y las interfaces necesarias.
    import net.rim.blackberry.api.mail.BodyPart;
    import net.rim.blackberry.api.mail.MimeBodyPart;
    import net.rim.blackberry.api.mail.Transport;
    import net.rim.device.api.ui.component.Dialog;
    
  2. Cree un método que tome un objeto MimeBodyPart como parámetro.
    void readEmailBody(MimeBodyPart mbp)
    {
  3. Invoque MimeBodyPart.getContent() y MimeBodyPart.getContentType() para recuperar el contenido del objeto MimeBodyPart.
    Object obj = mbp.getContent();
    String mimeType = mbp.getContentType();
  4. Cree una variable String para mantener la representación de String del objeto MimeBodyPart.
    String body = null;
  5. Si el dispositivo BlackBerry puede convertir el cuerpo HTML de un mensaje en una String, el objeto MimeBodyPart será una String. Asigne el objeto MimeBodyPart como una String y asígnelo a la representación String del cuerpo del mensaje.
    if (obj instanceof String)
    {
       body = (String)obj;
    }
  6. Si el dispositivo BlackBerry no puede convertir el cuerpo HTML de un mensaje en una String, el objeto MimeBodyPart será una matriz de bytes. Cree una instancia nueva de String utilizando como parámetro el objeto MimeBodyPart asignado como una matriz de bytes. Asigne la String a la representación de String del cuerpo del mensaje.
    else if (obj instanceof byte[])
    {
       body = new String((byte[])obj);
    }
  7. Compruebe si la representación de String del contenido del objeto MimeBodyPart contiene ContentType.TYPE_TEXT_PLAIN_STRING para determinar si el objeto MimeBodyPart es el cuerpo de texto sin formato del mensaje.
    if (mimeType.indexOf(ContentType.TYPE_TEXT_PLAIN_STRING) != -1)
    {
  8. Invoque MimeBodyPart.hasMore() y MimeBodyPart.moreRequestSent() para determinar si todo el cuerpo de texto está presente en el objeto MimeBodyPart.
    if (mbp.hasMore() && !mbp.moreRequestSent())
    {
     
  9. Si hay más datos disponibles para el objeto MimeBodyPart, invoque Transport.more() para recuperar el resto de los datos del objeto MimeBodyPart.
    Transport.more((BodyPart)mbp, true);
    
  10. Compruebe si la representación de String del contenido del objeto MimeBodyPart contiene ContentType.TYPE_TEXT_HTML_STRING para determinar si el objeto MimeBodyPart es el cuerpo HTML del mensaje.
    else if (mimeType.indexOf(ContentType.TYPE_TEXT_HTML_STRING) != -1)
    {
  11. Invoque MimeBodyPart.hasMore() y MimeBodyPart.moreRequestSent() para determinar si todo el cuerpo HTML está presente en el objeto MimeBodyPart.
    if (mbp.hasMore() && !mbp.moreRequestSent())
    {
  12. Si hay más datos disponibles para el objeto MimeBodyPart, invoque Transport.more() para recuperar el resto del objeto MimeBodyPart.
    Transport.more((BodyPart)mbp, true);
    

Ejemplo de código: Recuperar el contenido HTML de un mensaje de correo electrónico

private void readEmailBody(MimeBodyPart mbp)
{
   //Extract the content of the message.
   Object obj = mbp.getContent();
   String mimeType = mbp.getContentType();
   String body = null;
   if (obj instanceof String)
   {
      body = (String)body;
   }
   else if (obj instanceof byte[])
   {
      body = new String((byte[])obj);
   }
   if (mimeType.indexOf(ContentType.TYPE_TEXT_PLAIN_STRING) != -1)
   {
      _plainTextMessage = body;
      //Determine if all of the text body part is present.
      if (mbp.hasMore() && !mbp.moreRequestSent())
      {
         try
         {
            Transport.more((BodyPart)mbp, true);
         }
         catch (Exception ex)
         {
            Dialog.alert("Exception: " + ex.toString());
         }
      }
   }
   else if (mimeType.indexOf(ContentType.TYPE_TEXT_HTML_STRING) != -1)
   {
      _htmlMessage = body;
      //Determine if all of the HTML body part is present.
      if (mbp.hasMore() && !mbp.moreRequestSent())
      {
         try
         {
            Transport.more((BodyPart)mbp, true);
         }
         catch (Exception ex)
         { 
            Dialog.alert("Exception: " + ex.toString());
         }
      }
   }
}

¿Le ha resultado útil esta información? Envíenos sus comentarios.