⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pop3folder.java

📁 java Email you can use it to send email to others
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	    close(false);	} catch (MessagingException ex) { }	return false;    }    /**     * Always returns an empty <code>Flags</code> object because     * the POP3 protocol doesn't support any permanent flags.     *     * @return	empty Flags object     */    public Flags getPermanentFlags() {	return new Flags(); // empty flags object    }    /**     * Will not change while the folder is open because the POP3     * protocol doesn't support notification of new messages     * arriving in open folders.     */    public synchronized int getMessageCount() throws MessagingException {	if (!opened)	    return -1;	checkReadable();	return total;    }    public synchronized Message getMessage(int msgno)					throws MessagingException {	checkOpen();	POP3Message m;	// Assuming that msgno is <= total 	if ((m = (POP3Message)message_cache.elementAt(msgno-1)) == null) {	    m = createMessage(this, msgno);	    message_cache.setElementAt(m, msgno-1);	}	return m;    }    protected POP3Message createMessage(Folder f, int msgno)				throws MessagingException {	POP3Message m = null;	Constructor cons = ((POP3Store)store).messageConstructor;	if (cons != null) {	    try {		Object[] o = { this, new Integer(msgno) };		m = (POP3Message)cons.newInstance(o);	    } catch (Exception ex) {		// ignore	    }	}	if (m == null)	    m = new POP3Message(this, msgno);	return m;    }    /**     * Always throws <code>MethodNotSupportedException</code>     * because the POP3 protocol doesn't support appending messages.     *     * @exception	MethodNotSupportedException	always     */    public void appendMessages(Message[] msgs) throws MessagingException {	throw new MethodNotSupportedException("Append not supported");	    }    /**     * Always throws <code>MethodNotSupportedException</code>     * because the POP3 protocol doesn't support expunging messages     * without closing the folder; call the {@link #close close} method     * with the <code>expunge</code> argument set to <code>true</code>     * instead.     *     * @exception	MethodNotSupportedException	always     */    public Message[] expunge() throws MessagingException {	throw new MethodNotSupportedException("Expunge not supported");    }    /**     * Prefetch information about POP3 messages.     * If the FetchProfile contains <code>UIDFolder.FetchProfileItem.UID</code>,     * POP3 UIDs for all messages in the folder are fetched using the POP3     * UIDL command.     * If the FetchProfile contains <code>FetchProfile.Item.ENVELOPE</code>,     * the headers and size of all messages are fetched using the POP3 TOP     * and LIST commands.     */    public synchronized void fetch(Message[] msgs, FetchProfile fp)				throws MessagingException {	checkReadable();	if (!doneUidl && fp.contains(UIDFolder.FetchProfileItem.UID)) {	    /*	     * Since the POP3 protocol only lets us fetch the UID	     * for a single message or for all messages, we go ahead	     * and fetch UIDs for all messages here, ignoring the msgs	     * parameter.  We could be more intelligent and base this	     * decision on the number of messages fetched, or the	     * percentage of the total number of messages fetched.	     */	    String[] uids = new String[message_cache.size()];	    try {		if (!port.uidl(uids))		    return;	    } catch (EOFException eex) {		close(false);		throw new FolderClosedException(this, eex.toString());	    } catch (IOException ex) {		throw new MessagingException("error getting UIDL", ex);	    }	    for (int i = 0; i < uids.length; i++) {		if (uids[i] == null)		    continue;		POP3Message m = (POP3Message)getMessage(i + 1);		m.uid = uids[i];	    }	    doneUidl = true;	// only do this once	}	if (fp.contains(FetchProfile.Item.ENVELOPE)) {	    for (int i = 0; i < msgs.length; i++) {		try {		    POP3Message msg = (POP3Message)msgs[i];		    // fetch headers		    msg.getHeader("");		    // fetch message size		    msg.getSize();		} catch (MessageRemovedException mex) {		    // should never happen, but ignore it if it does		}	    }	}    }    /**     * Return the unique ID string for this message, or null if     * not available.  Uses the POP3 UIDL command.     *     * @return          unique ID string     * @exception	MessagingException     */    public synchronized String getUID(Message msg) throws MessagingException {	checkOpen();	POP3Message m = (POP3Message)msg;	try {	    if (m.uid == POP3Message.UNKNOWN)		m.uid = port.uidl(m.getMessageNumber());	    return m.uid;	} catch (EOFException eex) {	    close(false);	    throw new FolderClosedException(this, eex.toString());	} catch (IOException ex) {	    throw new MessagingException("error getting UIDL", ex);	}    }    /**     * Return the size of this folder, as was returned by the POP3 STAT     * command when this folder was opened.     *     * @return		folder size     * @exception	IllegalStateException	if the folder isn't open     */    public synchronized int getSize() throws MessagingException {	checkOpen();	return size;    }    /**     * Return the sizes of all messages in this folder, as returned     * by the POP3 LIST command.  Each entry in the array corresponds     * to a message; entry <i>i</i> corresponds to message number <i>i+1</i>.     *     * @return		array of message sizes     * @exception	IllegalStateException	if the folder isn't open     * @since		JavaMail 1.3.3     */    public synchronized int[] getSizes() throws MessagingException {	checkOpen();	int sizes[] = new int[total];	InputStream is = null;	LineInputStream lis = null;	try {	    is = port.list();	    lis = new LineInputStream(is);	    String line;	    while ((line = lis.readLine()) != null) {		try {		    StringTokenizer st = new StringTokenizer(line);		    int msgnum = Integer.parseInt(st.nextToken());		    int size = Integer.parseInt(st.nextToken());		    if (msgnum > 0 && msgnum <= total)			sizes[msgnum - 1] = size;		} catch (Exception e) {		}	    }	} catch (IOException ex) {	    // ignore it?	} finally {	    try {		if (lis != null)		    lis.close();	    } catch (IOException cex) { }	    try {		if (is != null)		    is.close();	    } catch (IOException cex) { }	}	return sizes;    }    /**     * Return the raw results of the POP3 LIST command with no arguments.     *     * @return		InputStream containing results     * @exception	IllegalStateException	if the folder isn't open     * @since		JavaMail 1.3.3     */    public synchronized InputStream listCommand()				throws MessagingException, IOException {	checkOpen();	return port.list();    }    /**     * Close the folder when we're finalized.     */    protected void finalize() throws Throwable {	super.finalize();	close(false);    }    /* Ensure the folder is open */    void checkOpen() throws IllegalStateException {	if (!opened) 	    throw new IllegalStateException("Folder is not Open");    }    /* Ensure the folder is not open */    void checkClosed() throws IllegalStateException {	if (opened) 	    throw new IllegalStateException("Folder is Open");    }    /* Ensure the folder is open & readable */    void checkReadable() throws IllegalStateException {	if (!opened || (mode != READ_ONLY && mode != READ_WRITE))	    throw new IllegalStateException("Folder is not Readable");    }    /* Ensure the folder is open & writable */    void checkWritable() throws IllegalStateException {	if (!opened || mode != READ_WRITE)	    throw new IllegalStateException("Folder is not Writable");    }    /**     * Centralize access to the Protocol object by POP3Message     * objects so that they will fail appropriately when the folder     * is closed.     */    Protocol getProtocol() throws MessagingException {	checkOpen();	return port;    }    /*     * Only here to make accessible to POP3Message.     */    protected void notifyMessageChangedListeners(int type, Message m) {	super.notifyMessageChangedListeners(type, m);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -