Abrufen des HTML-Inhalts einer E-Mail-Nachricht
In der folgenden Aufgabe kann eine Ausnahme ausgegeben werden, wenn Sie die Transport.more()-Methode aufrufen.
- Importieren Sie die erforderlichen Klassen und Schnittstellen.
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;
- Erstellen Sie eine Methode, die als Parameter ein MimeBodyPart-Objekt verwendet.
void readEmailBody(MimeBodyPart mbp)
{
- Rufen Sie MimeBodyPart.getContent() und MimeBodyPart.getContentType() auf, um den Inhalt des MimeBodyPart-Objekts abzurufen.
Object obj = mbp.getContent();
String mimeType = mbp.getContentType();
- Erstellen Sie eine String-Variable, die die String-Darstellung des MimeBodyPart-Objekts enthält.
String body = null;
- Wenn das BlackBerry-Gerät den HTML-Text einer Nachricht in ein String-Objekt konvertieren kann, ist das MimeBodyPart-Objekt ein String-Objekt. Wandeln Sie das MimeBodyPart-Objekt in ein String-Objekt um, und weisen Sie es der String-Darstellung des Nachrichtentextteils der Nachricht zu.
if (obj instanceof String)
{
body = (String)obj;
}
- Wenn das BlackBerry-Gerät den HTML-Text einer Nachricht nicht in ein String-Objekt konvertieren kann, ist das MimeBodyPart-Objekt ein Byte-Array. Erstellen Sie eine neue Instanz des String-Objekts, wobei Sie das MimeBodyPart-Objekt, das in ein Byte-Array umgewandelt wurde, als Parameter verwenden. Weisen Sie das String-Objekt der String-Darstellung des Nachrichtentextteils der Nachricht zu.
else if (obj instanceof byte[])
{
body = new String((byte[])obj);
}
- Überprüfen Sie, ob die String-Darstellung des Inhalts des MimeBodyPart-Objekts ContentType.TYPE_TEXT_PLAIN_STRING enthält, um festzustellen, ob das MimeBodyPart-Objekt der Nur-Text-Nachrichtentextteil der Nachricht ist.
if (mimeType.indexOf(ContentType.TYPE_TEXT_PLAIN_STRING) != -1)
{
- Rufen Sie MimeBodyPart.hasMore() und MimeBodyPart.moreRequestSent() auf, um festzustellen, ob der gesamte Text-Nachrichtentextteil im MimeBodyPart-Objekt vorhanden ist.
if (mbp.hasMore() && !mbp.moreRequestSent())
{
- Wenn für das MimeBodyPart-Objekt mehr Daten verfügbar sind, rufen Sie Transport.more() auf, um die übrigen Daten für das MimeBodyPart-Objekt abzurufen.
Transport.more((BodyPart)mbp, true);
- Überprüfen Sie, ob die String-Darstellung des Inhalts des MimeBodyPart-Objekts ContentType.TYPE_TEXT_HTML_STRING enthält, um festzustellen, ob das MimeBodyPart-Objekt der HTML-Nachrichtentextteil der Nachricht ist.
else if (mimeType.indexOf(ContentType.TYPE_TEXT_HTML_STRING) != -1)
{
- Rufen Sie MimeBodyPart.hasMore() und MimeBodyPart.moreRequestSent() auf, um festzustellen, ob der gesamte HTML-Nachrichtentextteil im MimeBodyPart-Objekt vorhanden ist.
if (mbp.hasMore() && !mbp.moreRequestSent())
{
- Wenn für das MimeBodyPart-Objekt mehr Daten verfügbar sind, rufen Sie Transport.more() auf, um die übrigen Teile des MimeBodyPart-Objekts abzurufen.
Transport.more((BodyPart)mbp, true);
Codebeispiel: Abrufen des HTML-Inhalts einer E-Mail-Nachricht
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());
}
}
}
}
Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.