📄 pop3store.java
字号:
/*
* 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><init></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>
* ꆼꆼ<init>,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 + -