Guía de desarrollo

Local Navigation

Recuperar el texto sin formato y el contenido HTML del cuerpo de un mensaje de correo electrónico utilizando un método recursivo

Cree un método recursivo para recuperar todas las partes del cuerpo de un mensaje de correo electrónico, incluido el texto sin formato y HTML.

  1. Importe las clases y las interfaces necesarias.
    import net.rim.blackberry.api.mail.MimeBodyPart;
    import net.rim.blackberry.api.mail.Multipart;
    import net.rim.blackberry.api.mail.SupportedAttachmentPart;
    import net.rim.blackberry.api.mail.TextBodyPart;
    import net.rim.blackberry.api.mail.UnsupportedAttachmentPart;
    
  2. Cree la firma del método para el método recursivo.
    void findEmailBody(Object obj) {...}
    
  3. Cree las variables locales que indican si BlackBerry Attachment Service es compatible con el tipo de archivo adjunto del mensaje.
    boolean _hasSupportedAttachment; 
    boolean _hasUnsupportedAttachment;
    
  4. Inicialice las variables locales.
    _hasSupportedAttachment = false; 
    _hasUnsupportedAttachment = false;
    
  5. Si el parámetro del método es un objeto Multipart, el objeto tiene varios objetos BodyPart. En cada objeto BodyPart, invoque el método recursivo que busca en el cuerpo de un mensaje de correo electrónico.
    if(obj instanceof Multipart)
    { 
       _Multipart mp = (Multipart)obj;
       //Extract all of the parts within the Multipart message.
       for(int count=0; count < mp.getCount(); ++count)
       { 
          findEmailBody(mp.getBodyPart(count));
       }
    }
    
  6. Si el objeto BodyPart es un TextBodyPart, recupere el cuerpo de texto sin formato del mensaje.
    else if (obj instanceof TextBodyPart)
    {
       //This message only has a text body.
       TextBodyPart tbp = (TextBodyPart) obj; 
       readEmailBody(tbp);
    }
    
  7. Compruebe si el objeto BodyPart es un MimeBodyPart.
    else if (obj instanceof MimeBodyPart) {...}
    
  8. Si el objeto BodyPart es un MimeBodyPart, lleve a cabo las acciones siguientes:
    1. Asigne el objeto BodyPart como un MimeBodyPart.
      MimeBodyPart mbp = (MimeBodyPart) obj;  
      
    2. Si el objeto MimeBodyPart no contiene archivos adjuntos, recupere el cuerpo del mensaje utilizando el objeto MimeBodyPart como un parámetro.
      if (mbp.getContentType().indexOf(ContentType.TYPE_TEXT_HTML_STRING) != -1)
      {
         readEmailBody(mbp);
      }
      
    3. Si el objeto MimeBodyPart contiene archivos adjuntos, invoque un método que recupere el cuerpo del mensaje.
      else if 
         (mbp.getContentType().equals(ContentType.TYPE_MULTIPART_MIXED_STRING) || 
            mbp.getContentType().equals(ContentType.TYPE_MULTIPART_ALTERNATIVE_STRING))
      {
         findEmailBody(mbp.getContent());
      }
      
  9. Si el BodyPart es un archivo adjunto compatible con BlackBerry Attachment Service, cambie la variable local pertinente a true.
    else if (obj instanceof SupportedAttachmentPart)
    {
       _hasSupportedAttachment = true;
    } 
    
  10. Si el BodyPart es un archivo adjunto no compatible con BlackBerry Attachment Service, cambie la variable local pertinente a true.
    else if (obj instanceof UnsupportedAttachmentPart)
    {
       _hasUnsupportedAttachment = true;
    } 
    

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

private void findEmailBody(Object obj)
{
   //Reset the attachment flags.
   _hasSupportedAttachment = false;
   _hasUnsupportedAttachment = false;
   if(obj instanceof Multipart)
   {
      Multipart mp = (Multipart)obj;
      for(int count=0; count < mp.getCount(); ++count)
      {
        findEmailBody(mp.getBodyPart(count));
      }
   }
   else if (obj instanceof TextBodyPart)
   {
      TextBodyPart tbp = (TextBodyPart) obj;
      readEmailBody(tbp);
   }
   else if (obj instanceof MimeBodyPart)
   {
      MimeBodyPart mbp = (MimeBodyPart)obj;
      if (mbp.getContentType().indexOf(ContentType.TYPE_TEXT_HTML_STRING) != -1)
      {
        readEmailBody(mbp);
      }
   }
   else if (mbp.getContentType().equals(ContentType.TYPE_MULTIPART_MIXED_STRING) ||
   mbp.getContentType().equals(ContentType.TYPE_MULTIPART_ALTERNATIVE_STRING))
   {    
      //The message has attachments or we are at the top level of the message.
      //Extract all of the parts within the MimeBodyPart message.
      findEmailBody(mbp.getContent());
   }
   else if (obj instanceof SupportedAttachmentPart)  
   {
      _hasSupportedAttachment = true;
   }
   else if (obj instanceof UnsupportedAttachmentPart) 
   {
      _hasUnsupportedAttachment = true;
   }
}

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