Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to Read a Message with Content Type multipart/alternative

843830Aug 2 2006 — edited Aug 3 2006
Hi ,
I need to write a POP3 Client to read email message ..but some times the messages comes with content type multipart/alternative

how to parse it and read only one of the content :
for example :
This is a multi-part message in MIME format.

------=_NextPart_000_12C25_01C6B64F.09226B00
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit


Assignment to workgroup Name 1 : L2 SD Service Delivery Apps Spt

Open CI Search Code : HPSD

Description : tesat

General Information :

Is the workgroup owner Aware of the addition to Workgroup : Yes

Workgroup to be added :

L2 SD Service Delivery Apps Spt












------=_NextPart_000_12C25_01C6B64F.09226B00
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<br><P>Assignment to workgroup Name 1 : L2 SD Service Delivery Apps =
Spt</P>
<P>Open CI Search Code : HPSD</P>
<P>Description : tesat</P>
<P>General Information :</P>
<P>Is the workgroup owner Aware of the addition to Workgroup : Yes</P>
<P>Workgroup to be added :</P>
<P>L2 SD Service Delivery Apps Spt</P>
<P> </P>
<P> </P>
<P> </P>
<P> </P>
<P> </P>
------=_NextPart_000_12C25_01C6B64F.09226B00--




The Same message is in text as well as HTML so not sure how to read it .
currently my program is as follows




for (int i = 0; i < found.length; i++) {
Message m = found;
// Get some headers
Date date = m.getSentDate();
Address [] from = m.getFrom();
String subj = m.getSubject();
String mimeType = m.getContentType();
System.out.println(date + "\t" + from[0] + "\t" +
subj + "\t" + mimeType);


Object o = m.getContent();


if (o instanceof String) {
System.out.println("**This is a String Message**");
System.out.println((String)o);
} else if (o instanceof Multipart) {
System.out.print("**This is a Multipart Message. ");
Multipart mp = (Multipart)o;
int count3 = mp.getCount();
System.out.println("It has " + count3 +
" BodyParts in it**");
for (int j = 0; j < count3; j++) {
// Part are numbered starting at 0
BodyPart b = mp.getBodyPart(j);
String mimeType2 = b.getContentType();
System.out.println( "BodyPart " + (j + 1) +
" is of MimeType " + mimeType);

Object o2 = b.getContent();
if (o2 instanceof String) {
System.out.println("**This is a String BodyPart**");
System.out.println((String)o2);
} else if (o2 instanceof Multipart) {
System.out.print(
"**This BodyPart is a nested Multipart. ");
Multipart mp2 = (Multipart)o2;
int count2 = mp2.getCount();
System.out.println("It has " + count2 +
"further BodyParts in it**");
} else if (o2 instanceof InputStream) {
System.out.println(
"**This is an InputStream BodyPart**");
}
} //End of for
} else if (o instanceof InputStream) {
System.out.println("***********************************This is an InputStream message**");
InputStream is = (InputStream)o;
/* if(m.getContentType().equalsIgnoreCase("multipart/alternative")) {
MimeMultipart mp = new MimeMultipart();

// Assumes character content (not binary images)
} else {*/
BufferedReader reader
=new BufferedReader(new InputStreamReader(is));
String thisLine=reader.readLine();

while (thisLine!=null) {
System.out.println(thisLine);
thisLine=reader.readLine();
}


}


--------------------------------------------
So when the Content TYpe is multipart/alternative it goes into InputStream message .

any help and ideas to handel such situations ?

Thanks
San

Message was edited by:
sanrosh_95
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 31 2006
Added on Aug 2 2006
1 comment
3,068 views