개발 가이드

Local Navigation

이메일 메시지의 HTML 콘텐츠 가져오기

다음 작업에서는 Transport.more() 메소드를 호출할 때 예외가 throw될 수 있습니다.

  1. 필요한 클래스와 인터페이스를 가져옵니다.
    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. 매개 변수로 MimeBodyPart 객체를 받아들이는 메소드를 만듭니다.
    void readEmailBody(MimeBodyPart mbp)
    {
  3. MimeBodyPart.getContent()MimeBodyPart.getContentType()을 호출하여 MimeBodyPart 객체의 콘텐츠를 가져옵니다.
    Object obj = mbp.getContent();
    String mimeType = mbp.getContentType();
  4. MimeBodyPart 객체의 String 표현을 저장할 String 변수를 만듭니다.
    String body = null;
  5. BlackBerry 단말기가 메시지의 HTML 본문을 String으로 변환할 수 있는 경우 MimeBodyPart 객체는 String이 됩니다. MimeBodyPart 객체를 String으로 캐스팅하여 메시지 본문 부분의 String 표현에 할당합니다.
    if (obj instanceof String)
    {
       body = (String)obj;
    }
  6. BlackBerry 단말기가 메시지의 HTML 본문을 String으로 변환할 수 없는 경우 MimeBodyPart 객체는 바이트 배열이 됩니다. 바이트 배열로 캐스팅된 MimeBodyPart 객체를 매개 변수로 사용하여 StringString의 인스턴스를 새로 만듭니다. String을 메시지 본문 부분의 String 표현에 할당합니다.
    else if (obj instanceof byte[])
    {
       body = new String((byte[])obj);
    }
  7. MimeBodyPart 객체의 콘텐츠에 대한 String 표현이 ContentType.TYPE_TEXT_PLAIN_STRING을 포함하는지 점검하여 MimeBodyPart 객체가 메시지의 일반 텍스트의 본문 부분인지 여부를 확인합니다.
    if (mimeType.indexOf(ContentType.TYPE_TEXT_PLAIN_STRING) != -1)
    {
  8. MimeBodyPart.hasMore()MimeBodyPart.moreRequestSent()를 호출하여 텍스트의 본문 부분이 모두 MimeBodyPart 객체에 있는지 확인합니다.
    if (mbp.hasMore() && !mbp.moreRequestSent())
    {
     
  9. 사용 가능한 MimeBodyPart 객체의 데이터가 더 있으면 Transport.more()를 호출하여 MimeBodyPart 객체의 나머지 데이터를 가져옵니다.
    Transport.more((BodyPart)mbp, true);
    
  10. MimeBodyPart 객체의 콘텐츠에 대한 String 표현이 ContentType.TYPE_TEXT_HTML_STRING을 포함하는지 점검하여 MimeBodyPart 객체가 메시지의 HTML 본문 부분인지 여부를 확인합니다.
    else if (mimeType.indexOf(ContentType.TYPE_TEXT_HTML_STRING) != -1)
    {
  11. MimeBodyPart.hasMore()MimeBodyPart.moreRequestSent()를 호출하여 HTML 본문 부분이 모두 MimeBodyPart 객체에 있는지 확인합니다.
    if (mbp.hasMore() && !mbp.moreRequestSent())
    {
  12. 사용 가능한 MimeBodyPart 객체의 데이터가 더 있으면 Transport.more()를 호출하여 나머지 MimeBodyPart 객체를 가져옵니다.
    Transport.more((BodyPart)mbp, true);
    

코드 샘플: 이메일 메시지의 HTML 콘텐츠 가져오기

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());
         }
      }
   }
}

이 정보가 도움이 되었습니까? 의견을 보내 주십시오.