|
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
|