Guida allo sviluppo

Local Navigation

Recupero del contenuto HTML di un messaggio e-mail

Nella seguente attività, potrebbe essere generata un'eccezione quando si richiama il metodo Transport.more().

  1. Importare le classi e le interfacce richieste.
    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. Creare un metodo con un oggetto MimeBodyPart come parametro.
    void readEmailBody(MimeBodyPart mbp)
    {
  3. Richiamare MimeBodyPart.getContent() e MimeBodyPart.getContentType() per recuperare il contenuto dell'oggetto MimeBodyPart.
    Object obj = mbp.getContent();
    String mimeType = mbp.getContentType();
  4. Creare una variabile String che contenga la rappresentazione String dell'oggetto MimeBodyPart.
    String body = null;
  5. Se il dispositivo BlackBerry può convertire in formato String il corpo HTML di un messaggio, l'oggetto MimeBodyPart sarà di tipo String. Eseguire il cast dell'oggetto MimeBodyPart come String e assegnarlo alla rappresentazione String della parte del corpo del messaggio.
    if (obj instanceof String)
    {
       body = (String)obj;
    }
  6. Se il dispositivo BlackBerry non può convertire in formato String il corpo HTML di un messaggio, l'oggetto MimeBodyPart sarà una matrice di byte. Creare una nuova istanza di String utilizzando come parametro l'oggetto MimeBodyPart di cui è stato eseguito il cast come matrice di byte. Assegnare String alla rappresentazione String della parte del corpo del messaggio.
    else if (obj instanceof byte[])
    {
       body = new String((byte[])obj);
    }
  7. Verificare se la rappresentazione String del contenuto dell'oggetto MimeBodyPart contiene ContentType.TYPE_TEXT_PLAIN_STRING per determinare se l'oggetto MimeBodyPart è la parte in testo normale del corpo del messaggio.
    if (mimeType.indexOf(ContentType.TYPE_TEXT_PLAIN_STRING) != -1)
    {
  8. Richiamare MimeBodyPart.hasMore() e MimeBodyPart.moreRequestSent() per determinare se tutta la parte del corpo del testo è presente nell'oggetto MimeBodyPart.
    if (mbp.hasMore() && !mbp.moreRequestSent())
    {
     
  9. Se per l'oggetto MimeBodyPart sono disponibili altri dati, richiamare Transport.more() per recuperare il resto dei dati dell'oggetto MimeBodyPart.
    Transport.more((BodyPart)mbp, true);
    
  10. Verificare se la rappresentazione String del contenuto dell'oggetto MimeBodyPart contiene ContentType.TYPE_TEXT_HTML_STRING per determinare se l'oggetto MimeBodyPart è la parte del corpo HTML del messaggio.
    else if (mimeType.indexOf(ContentType.TYPE_TEXT_HTML_STRING) != -1)
    {
  11. Richiamare MimeBodyPart.hasMore() e MimeBodyPart.moreRequestSent() per determinare se tutta la parte del corpo HTML è presente nell'oggetto MimeBodyPart.
    if (mbp.hasMore() && !mbp.moreRequestSent())
    {
  12. Se per l'oggetto MimeBodyPart sono disponibili altri dati, richiamare Transport.more() per recuperare il resto dei dati dell'oggetto MimeBodyPart.
    Transport.more((BodyPart)mbp, true);
    

Esempio di codice: recupero del contenuto HTML di un messaggio e-mail

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 informazioni sono state utili? Inviateci i vostri commenti.