From: eunever32 on
On Jun 13, 5:20 pm, Martin Gregorie <mar...(a)address-in-sig.invalid>
wrote:
> On Sun, 13 Jun 2010 05:31:25 -0700, euneve...(a)yahoo.co.uk wrote:
> > On Jun 11, 7:22 pm, Martin Gregorie <mar...(a)address-in-sig.invalid>
> > wrote:
> >> On Fri, 11 Jun 2010 06:53:14 -0700, euneve...(a)yahoo.co.uk wrote:
> >> >> > (4) should become:
> >> >> >     - create a ByteArrayInputStream from the decrypted byte
> >> >> >     array - pass that to a MimeMessage constructor.
>
> >> >> >     At this point you can use the standard MimeMessage and
> >> >> >     MultiPart methods to parse the message and extract its
> >> >> >     content.
>
> >> Sorry for all the repeats - the NNTP server I use threw a wobbly this
> >> morning and I hadn't realised it was accepting the post *and then*
> >> locking up until just now.
>
> >> >> Thanks Martin but maybe you can help me:
>
> >> >> As I said I'm new to this Javamail api and am looking for a succinct
> >> >> way to obtain the attachment
>
> >> >> I can do
>
> >> >> MimeMessage msg = new MimeMessage(session, new
> >> >> FileInputStream("file.txt"));
>
> >> >> The resulting msg has three headers which looks right
>
> >> >> But when I do
> >> >> if (msg.getContent() instanceof Multipart) {
> >> >>      saveAttachment
>
> >> >> }
>
> >> True enough: MimeMessage.getContent() can return a lot of things
> >> including InputStreams - thats why it returns an Object!
>
> >> Did you do what I suggested and download both the JavaMail Design
> >> Specification and the API Documentation? If not, go get them now and
> >> read them. The first example in Design Specification Appendix B shows
> >> exactly how to parse a multipart MIME message.
>
> >> The Appendix B examples are all available as downloadable source code,
> >> so you can run them and/or swipe useful code from them.
>
> >> --
> >> martin@   | Martin Gregorie
> >> gregorie. | Essex, UK
> >> org       |- Hide quoted text -
>
> >> - Show quoted text -
>
> > Martin
>
> > Thanks for your suggestion and I have obtained the Javamail Design
> > document you describe.
> > It is very good and I now know about Message, Part, MimePart,
> > MimeMultipart, MimeMessage and I can see there is an example of how to
> > read attachments.
> > I am not at my desk right now so I can't verify it however I am
> > concerned that if I do the following:
>
> > Object content = decryptContent(message, key, publicKey); And then I try
>
> > if (content instanceof MimePart) {
> >     ...
> > }
> > if (content instanceof MimeMultiPart) {
> >     ...
> > }
> > if (content instanceof InputStream) {
> >     ...
> > }
>
> > And if my code finds itself in "InputStream" then I am back to square
> > one (?)
> > And how then do I obtain the attachment which I clearly have
>
> That depends what you want to do with it - you can read the InputStream
> into an array, write it to a file,.... whatever your application requires..
> You should, of course, be looking at the Part's headers to see what
> you've got (and hence how you need to handle it) begoe doing anything
> with the content. And don't forget that a MIME message is a recursive
> structure. It may simply have a String as its root node (it its a simple
> plain text message), but OTOH it might contain a MIME message which
> contains one or more MIME messages as their attachments, which in turn.....
>
> --
> martin@   | Martin Gregorie
> gregorie. | Essex, UK
> org       |- Hide quoted text -
>
> - Show quoted text -

For anyone else who encounters this problem... I want to let you
know .. the problem was due to using an old version of Javamail

When I upgraded to Javamail 1.4.3 it worked.