Segue um exemplo que vem na documentação da API JavaMail:

Example: Showing a Message

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
/*
* Demo app that exercises the Message interfaces.
* Show information about and contents of messages.
*
* msgshow protocol host user password mailbox msgnum
*/
public class msgshow
{
   static String protocol;
   static String host = null;
   static String user = null;
   static String password = null;
   static String mbox = "INBOX";
   static String url = null;
   static int port = -1;
   static boolean verbose = false;
   static boolean debug = false;
   static boolean showStructure = false;

   public static void main(String argv[])
   {
      int msgnum = -1;
      int optind;
      for (optind = 0; optind < argv.length; optind++)
      {
         if (argv[optind].equals("-T")) {
            protocol = argv[++optind];
         } else if (argv[optind].equals("-H")) {
            host = argv[++optind];
         } else if (argv[optind].equals("-U")) {
            user = argv[++optind];.64 Appendix B: Examples Using the JavaMail API
            Example: Showing a Message
            September 2000 JavaMail� API Design Specification
         } else if (argv[optind].equals("-P")) {
            password = argv[++optind];
         } else if (argv[optind].equals("-v")) {
            verbose = true;
         } else if (argv[optind].equals("-D")) {
            debug = true;
         } else if (argv[optind].equals("-f")) {
            mbox = argv[++optind];
         } else if (argv[optind].equals("-L")) {
            url = argv[++optind];
         } else if (argv[optind].equals("-p")) {
            port = Integer.parseInt(argv[++optind]);
         } else if (argv[optind].equals("-s")) {
            showStructure = true;
         } else if (argv[optind].equals("--")) {
            optind++;
            break;
         } else if (argv[optind].startsWith("-")) {
            System.out.println(
            "Usage: msgshow [-L url] [-T protocol] [-H host] [-p port] [-U user]");
            System.out.println(
            " [-P password] [-f mailbox] [msgnum] [-v] [-D] [-s]");
            System.exit(1);
         } else {
            break;
         }
      }
      try
      {
         if (optind < argv.length)
            msgnum = Integer.parseInt(argv[optind]);
         // Get a Properties object
         Properties props = System.getProperties();
         // Get a Session object
         Session session = Session.getDefaultInstance(props, null);
         session.setDebug(debug);
         // Get a Store object
         Store store = null;
         if (url != null) {
            URLName urln = new URLName(url);
            store = session.getStore(urln);
            store.connect();
         } else {
            if (protocol != null)
               store = session.getStore(protocol);
            else
               store = session.getStore();
            // Connect
            if (host != null || user != null || password != null)
               store.connect(host, port, user, password);
            else
               store.connect();
         }
         // Open the Folder
         Folder folder = store.getDefaultFolder();
         if (folder == null) {
            System.out.println("No default folder");
            System.exit(1);
         }
         folder = folder.getFolder(mbox);
         if (folder == null) {
            System.out.println("Invalid folder");
            System.exit(1);
         }
         // try to open read/write and if that fails try read-only
         try
         {
            folder.open(Folder.READ_WRITE);
         } catch (MessagingException ex) {
            folder.open(Folder.READ_ONLY);
         }
         int totalMessages = folder.getMessageCount();
         if (totalMessages == 0) {
            System.out.println("Empty folder");
            folder.close(false);
            store.close();
            System.exit(1);
         }
         if (verbose) {
            int newMessages = folder.getNewMessageCount();
            System.out.println("Total messages = " + totalMessages);
            System.out.println("New messages = " + newMessages);
            System.out.println("-------------------------------");
         }
         if (msgnum == -1) {
            // Attributes & Flags for all messages ..
            Message[] msgs = folder.getMessages();
            // Use a suitable FetchProfile
            FetchProfile fp = new FetchProfile();
            fp.add(FetchProfile.Item.ENVELOPE);
            fp.add(FetchProfile.Item.FLAGS);
            fp.add("X-Mailer");
            folder.fetch(msgs, fp);
            for (int i = 0; i < msgs.length; i++) {
               System.out.println("--------------------------");
               System.out.println("MESSAGE #" + (i + 1) + ":");
               dumpEnvelope(msgs[i]);
            }
         } else {
            System.out.println("Getting message number: " + msgnum);
            Message m = null;
            try
            {
               m = folder.getMessage(msgnum);
               dumpPart(m);
            } catch (IndexOutOfBoundsException iex) {
               System.out.println("Message number out of range");
            }
         }
         folder.close(false);
         store.close();
         } catch (Exception ex) {
            ex.printStackTrace();
         }
      System.exit(1);
   }

   public static void dumpPart(Part p) throws Exception
   {
      if (p instanceof Message)
         dumpEnvelope((Message)p);
      /** Dump input stream ..
      InputStream is = p.getInputStream();
      // If "is" is not already buffered, wrap a BufferedInputStream
      // around it.
      if (!(is instanceof BufferedInputStream))
      is = new BufferedInputStream(is);
      int c;
      while ((c = is.read()) != -1)
      System.out.write(c);
      **/
      pr("CONTENT-TYPE: " + p.getContentType());
      /*
      * Using isMimeType to determine the content type avoids
      * fetching the actual content data until we need it.
      */
      if (p.isMimeType("text/plain")) {
         pr("This is plain text");
         pr("---------------------------");
         if (!showStructure)
            System.out.println((String)p.getContent());
      } else if (p.isMimeType("multipart/*")) {
         pr("This is a Multipart");
         pr("---------------------------");
         Multipart mp = (Multipart)p.getContent();
         level++;
         int count = mp.getCount();
         for (int i = 0; i < count; i++)
            dumpPart(mp.getBodyPart(i));
         level--;
      } else if (p.isMimeType("message/rfc822")) {
         pr("This is a Nested Message");
         pr("---------------------------");
         level++;
         dumpPart((Part)p.getContent());
         level--;
      } else if (!showStructure) {
         /*
         * If we actually want to see the data, and it�s not a
         * MIME type we know, fetch it and check its Java type.
         */
         Object o = p.getContent();
         if (o instanceof String) {
         pr("This is a string");
         pr("---------------------------");
         System.out.println((String)o);
      } else if (o instanceof InputStream) {
         pr("This is just an input stream");
         pr("---------------------------");
         InputStream is = (InputStream)o;
         int c;
         while ((c = is.read()) != -1)
         System.out.write(c);
      } else {
         pr("This is an unknown type");
         pr("---------------------------");
         pr(o.toString());
      }
   }

   public static void dumpEnvelope(Message m) throws Exception
   {
      pr("This is the message envelope");
      pr("---------------------------");
      Address[] a;
      // FROM
      if ((a = m.getFrom()) != null) {
         for (int j = 0; j < a.length; j++)
            pr("FROM: " + a[j].toString());
      }
      //TO
      if ((a = m.getRecipients(Message.RecipientType.TO)) != null) {
         for (int j = 0; j < a.length; j++)
            pr("TO: " + a[j].toString());
      }
      // SUBJECT
      pr("SUBJECT: " + m.getSubject());
      // DATE
      Date d = m.getSentDate();
      pr("SendDate: " + (d != null ? d.toString() : "UNKNOWN"));
      //FLAGS
      Flags flags = m.getFlags();
      StringBuffer sb = new StringBuffer();
      Flags.Flag[] sf = flags.getSystemFlags(); // get the system flags
      boolean first = true;
      for (int i = 0; i < sf.length; i++)
      {
         String s;
         Flags.Flag f = sf[i];
         if (f == Flags.Flag.ANSWERED)
            s = "\\Answered";
         else if (f == Flags.Flag.DELETED)
            s = "\\Deleted";
         else if (f == Flags.Flag.DRAFT)
            s = "\\Draft";
         else if (f == Flags.Flag.FLAGGED)
            s = "\\Flagged";
         else if (f == Flags.Flag.RECENT)
            s = "\\Recent";
         else if (f == Flags.Flag.SEEN)
            s = "\\Seen";
         else
            continue; // skip it
         if (first)
            first = false;
         else
            sb.append(' ');
            sb.append(s);
      }
      String[] uf = flags.getUserFlags(); // get user-flag strings
      for (int i = 0; i < uf.length; i++) {
         if (first)
            first = false;
         else
            sb.append(' ');
            sb.append(uf[i]);
      }
      pr("FLAGS: " + sb.toString());.Appendix B: Examples Using the JavaMail API 69
      Example: Listing Folders
      // X-MAILER
      String[] hdrs = m.getHeader("X-Mailer");
      if (hdrs != null)
         pr("X-Mailer: " + hdrs[0]);
      else
         pr("X-Mailer NOT available");
      }

      static String indentStr = " ";
      static int level = 0;

      /**
      * Print a, possibly indented, string.
      */
      public static void pr(String s) {
      if (showStructure)
         System.out.print(indentStr.substring(0, level * 2));
      System.out.println(s);
   }
}

Jaci Junior wrote:

Pessoal,Alguem tem ai um exemplo de codigopara baixar emails de um servidor?  Jaci Junior 

--
Nilo Garcia Silveira
Estagiário

Visual Systems Informatica Ltda.
Oracle Partner Program
http://www.visualsystems.com.br
Tel: (17) 2124425 R. 31
 

Responder a