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

📄 pop3store.java

📁 mywork是rcp开发的很好的例子
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
 * POP3Store.java
 *
 * Copyright (C) 1998-2000 FreeBeans <freebeans@mub.biglobe.ne.jp>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * Copyright (C) 1998-2000ꆼ FreeBeans <freebeans@mub.biglobe.ne.jp>
 *
 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼFree Software Foundation 
 * ꆼꆼꆼꆼꆼGNU ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 * GNU ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 *
 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼGNU ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼFree Software Foundation, Inc., 675 Mass Ave,
 * Cambridge, MA 02139, USA ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 */

package jp.gr.java_conf.roadster.net.pop;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.BitSet;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.Vector;

import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.event.StoreEvent;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import net.sf.component.config.ConfigHelper;
import net.sf.pim.mail.ISpamChecker;
import net.sf.pim.mail.MailPlugin;
import net.sf.pim.mail.compose.Contract;
import net.sf.pim.mail.compose.ContractSelectComposite;
import net.sf.pim.mail.reader.FolderViewer;
import net.sf.pim.mail.reader.MessageCount;
import net.sf.util.persistence.IEntry;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.Platform;
import org.eclipse.ui.PlatformUI;

/**
 * POP3Store ꆼꆼꆼ.
 *
 * POP3ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
 *
 * POP3Store ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
 * <table BORDER="1">
 * <th>ꆼꆼꆼꆼꆼꆼ</th>
 * <th>ꆼ</th>
 * <th>ꆼꆼ</th>
 * <th>ꆼꆼꆼꆼꆼꆼ</th>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.rootDirectory</code></td>
 *  <td><code>String</code></td>
 *  <td>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ</td>
 *  <td>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.(System.getProperty("user.dir"))</td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.authMode</code></td>
 *  <td><code>String</code></td>
 *  <td>POP3ꆼꆼꆼꆼꆼꆼNORMAL ꆼꆼꆼ APOP ꆼꆼꆼꆼꆼ.</td>
 *  <td>NORMAL</td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.receivingFolder</code></td>
 *  <td><code>String</code></td>
 *  <td>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
 *  <td>INBOX</td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.checkInterval</code></td>
 *  <td><code>int</code></td>
 *  <td>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.ꆼꆼꆼꆼꆼꆼ<BR>
 *      ꆼꆼꆼꆼꆼꆼꆼꆼ 0 ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.</td>
 *  <td>10</td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.leaveOnServer</code></td>
 *  <td><code>boolean</code></td>
 *  <td>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.<br>
 *      falseꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ</td>
 *  <td><code>true</code></td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.checkActions</code></td>
 *  <td><code>String</code></td>
 *  <td>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.ꆼꆼꆼꆼꆼꆼꆼꆼꆼ.<BR>
 *      <TABLE BORDER>
 *      <TR>
 *       <td>&lt;init&gt;</td><td>Folder ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.<B>ꆼꆼꆼꆼꆼꆼ</B></td>
 *      </TR>
 *      <TR>
 *       <td>open</td><td>Folder.open() ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.</td>
 *      </TR>
 *      <TR>
 *       <td>hasNewMessages</td><td>Folder.hasNewMessages() ꆼꆼꆼꆼꆼꆼꆼꆼꆼ.</td>
 *      </TR>
 *      </TABLE>
 *      ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ (,) ꆼꆼꆼꆼꆼꆼꆼꆼꆼ.<BR>
 *      ꆼꆼ&lt;init&gt;,hasNewMessages
 *   </td>
 *   <td>
 *     open,hasNewMessages
 *   </td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.receiveImmediatery</code></td>
 *  <td><code>boolean</code>
 *  <td>ꆼꆼcheckActionsꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.<BR>
 *      true ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.<BR>
 *      false ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
 *   </td>
 *   <td>
 *     <code>false</code>
 *   </td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.listHiddenFolders</code></td>
 *  <td><code>boolean</code></td>
 *  <td>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ<code>true</code>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
 *      ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼJava2ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼJDK1.1ꆼꆼꆼꆼꆼꆼꆼꆼꆼ true ꆼꆼꆼꆼ</td>
 *   <td><code>false</code></td>
 * </tr>
 *
 * <tr>
 *  <td><code>jp.gr.java_conf.roadster.net.pop.timeout</code></td>
 *  <td><code>int</code></td>
 *  <td><code>Socket</code>ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ</td>
 *   <td><code>0</code></td>
 * </tr>
 *
 * </table>
 */
public class POP3Store extends Store {
	/**
	 * INBOX ꆼꆼꆼꆼꆼꆼꆼ.(=INBOX)
	 */
	private static final String INBOX_NAME = "INBOX";
	
	/**
	 * UIDꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.(=uidl.dat)
	 */
	protected static final String UIDL_FILENAME = "uidl.dat";
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼ.(jp.gr.java_conf.roadster.net.pop)
	 */
	public static final String BASE_PROPERTY = "jp.gr.java_conf.roadster.net.pop.";
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	public static final String ROOTDIRECTORY_PROPERTY = BASE_PROPERTY + "rootDirectory";
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * "true" | "false" ꆼꆼꆼꆼꆼ.
	 */
	public static final String LEAVE_ON_SERVER_PROPERTY = BASE_PROPERTY + "leaveOnServer";

	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	public static final String RECEIVING_FOLDER_PROPERTY = BASE_PROPERTY + "receivingFolder";
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	public static final String CHECK_ACTION_PROPERTY = BASE_PROPERTY + "checkActions";
	
	/**
	 * 
	 */
	protected static final String RECEIVE_IMMEDIATERY_PROPERTY = BASE_PROPERTY + "receiveImmediatery";
	
	/**
	 * ꆼꆼꆼꆼꆼ CHECK_ACTION_PROPERTY ꆼꆼꆼꆼꆼꆼ.
	 * Folderꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected static final String RECEIVING_ACTION_INIT            = "<init>";
	
	/**
	 * ꆼꆼꆼꆼꆼ CHECK_ACTION_PROPERTY ꆼꆼꆼꆼꆼꆼ.
	 * Folder.open() ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected static final String RECEIVING_ACTION_OPEN            = "open";

	/**
	 * ꆼꆼꆼꆼꆼ CHECK_ACTION_PROPERTY ꆼꆼꆼꆼꆼꆼ.
	 * Folder.hasNewMessages() ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected static final String RECEIVING_ACTION_HASNEWMESSAGES  = "hasNewMessages";

	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼ. 0 ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	public static final String INTERVAL_PROPERTY = BASE_PROPERTY + "checkInterval";
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * "true" | "false" ꆼꆼꆼꆼꆼ.
	 */
	public static final String OFFLINEMODE_PROPERTY = BASE_PROPERTY + "offline";
	
 	/**
 	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ. 
 	 * ꆼꆼ "NORMAL" ꆼꆼꆼ "APOP" ꆼꆼꆼꆼꆼ.
 	 */
 	public static final String AUTHMODE_PROPERTY = BASE_PROPERTY + "authMode";
 	
 	/**
 	 * ꆼꆼꆼꆼꆼ AUTHMODE_PROPERTY ꆼꆼꆼꆼꆼꆼ.
 	 * ꆼꆼꆼꆼꆼ(USER/PASS ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
 	 */
 	private static final String NORMAL_AUTH = "NORMAL";
 	
 	/**
 	 * ꆼꆼꆼꆼꆼ AUTHMODE_PROPERTY ꆼꆼꆼꆼꆼꆼ.
 	 * APOPꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
 	 */
 	private static final String APOP_AUTH   = "APOP";
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
	 * "true" | "false" ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ false ꆼꆼꆼJava2ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
	 */
	public static final String LIST_HIDDEN_FOLDERS_PROPERTY = BASE_PROPERTY + "listHiddenFolders";

	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼint ꆼꆼꆼꆼꆼꆼ
	 * ꆼꆼꆼꆼꆼꆼꆼ
	 */
	public static final String TIMEOUT_PROPERTY = BASE_PROPERTY + "timeout";

	/**
	 * POP3Client.
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected POP3Client client;
	
	/**
	 * UIDꆼꆼꆼ.ꆼꆼꆼꆼꆼꆼꆼꆼ UID ꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected Vector uidList;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼꆼSystem.getProperty("user.dir") ꆼꆼꆼ.
	 */
	protected File rootDirectory = new File(System.getProperty("user.dir"));
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼ true.
	 */
	protected boolean leaveOnServer = true;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected boolean receiveImmediatery = false;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.<BR>
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.ꆼꆼꆼꆼꆼꆼꆼꆼ
	 */
	protected long checkInterval;
	protected static final long DEFAULT_CHECK_INTERVAL = 10L * 60L* 1000L;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼ false.
	 */
	protected boolean offlineMode = false;
	
	/**
	 * ꆼꆼꆼꆼꆼ. ꆼꆼꆼꆼꆼꆼ NORMAL.
	 */
	protected String authMode = NORMAL_AUTH;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ falseꆼ
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼJava2ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼJDK1.1ꆼꆼꆼꆼꆼ true ꆼꆼꆼꆼꆼꆼꆼ
	 */
	protected boolean listHiddenFolders = false;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ
	 */
	protected int timeout = 0;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼ "INBOX".
	 */
	protected String receivingFolderName = INBOX_NAME;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected Vector checkActions = new Vector();
	
	/**
	 * UIDLꆼꆼꆼꆼ.
	 */
	protected File uidlFile;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected Hashtable masterFolders = new Hashtable();
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected MessageReceiver receiver;
	
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected IntervalTimer timerThread;

	/**
	 * localstore ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	private static final String LOCALSTORE_KEY = "localstore";

	/**
	 * authmode ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	private static final String AUTHMODE_KEY   = "authmode";

	public static final String SSL_KEY = "ssl";
	
	//是否是ssl连接
	private boolean ssl;
	/**
	 * ꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ protected ꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼ public ꆼꆼꆼꆼꆼꆼꆼꆼ.
	 *
	 * @param	session ꆼꆼStoreꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * @param	url	ꆼꆼStoreꆼꆼꆼꆼꆼꆼ URLName ꆼꆼꆼꆼꆼꆼ.
	 */
	public POP3Store(Session session, URLName urlname) {
		super(session, urlname);
		initStore(urlname);
	}
	
	/**
	 * POP3ꆼꆼꆼꆼꆼꆼꆼꆼ.
	 * ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 *
	 * @param	host	ꆼꆼꆼꆼ.
	 * @param	port	ꆼꆼꆼꆼꆼ.
	 * @param	username	ꆼꆼꆼꆼ.
	 * @param	password	ꆼꆼꆼꆼꆼ.
	 *
	 * @return	ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ true. ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ false.
	 * @exception javax.mail.MessagingException	ꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼꆼ.
	 */
	protected boolean protocolConnect(String host, int port, String user, String password) throws MessagingException {
		try {
			if (! offlineMode) {
				// POP3Client ꆼꆼꆼꆼꆼ.
				client = new POP3Client();
				if (debug) {
					client.setDebug(true);
				}
				if(ssl){
					client.setSsl(true);
				}
				client.setHost(host);
				if (port != -1) {
					client.setPort(port);
				}
				if (authMode.equals(NORMAL_AUTH)) {
					client.setAuthorizationMode(POP3Client.NORMAL_AUTHORIZATION);
				} else if (authMode.equals(APOP_AUTH)) {
					client.setAuthorizationMode(POP3Client.APOP_AUTHORIZATION);
				}
				client.setTimeout(timeout);
				client.setUser(user);

⌨️ 快捷键说明

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