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

📄 mailplugin.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
字号:
package net.sf.pim.mail;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import javax.mail.Authenticator;
import javax.mail.Folder;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;

import jp.gr.java_conf.roadster.net.pop.MessageIndex;
import jp.gr.java_conf.roadster.net.pop.POP3Store;
import net.sf.pim.mail.reader.FolderViewer;
import net.sf.util.ConfigHelper;

import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;

/**
 * The activator class controls the plug-in life cycle
 */
public class MailPlugin extends AbstractUIPlugin {

	// The plug-in ID
	public static final String PLUGIN_ID = "net.sf.mywork.mail";

	// The shared instance
	private static MailPlugin plugin;

	//邮件索引
	public static final String MAIL_INDEX_FILE = "mail.idx";
	
	//已读索引
	public static final String MAIL_READ_FILE="read.idx";

	//邮箱
	private Store store;
	
	//邮箱名
	public static final String INBOX="INBOX";
	public static final String OUTBOX="OUTBOX";
	public static final String TRASHBOX="TRASHBOX";
	public static final String ARCHIEBOX="ARCHIEBOX";
	public static final String SEARCHBOX="SEARCHBOX"; //虚拟邮箱
	
	public static final String INBOX_NAME="收件箱";
	public static final String OUTBOX_NAME="发件箱";
	public static final String TRASHBOX_NAME="垃圾箱";
	public static final String ARCHIEBOX_NAME="档案箱";
	public static final String SEARCHBOX_NAME="搜索箱"; //虚拟邮箱
	
	private static Map<String,String> folderName;
	static{
		folderName=new HashMap<String,String>(10);
		folderName.put(MailPlugin.INBOX,MailPlugin.INBOX_NAME);
		folderName.put(MailPlugin.OUTBOX,MailPlugin.OUTBOX_NAME);
		folderName.put(MailPlugin.TRASHBOX,MailPlugin.TRASHBOX_NAME);
		folderName.put(MailPlugin.ARCHIEBOX,MailPlugin.ARCHIEBOX_NAME);
		folderName.put(MailPlugin.SEARCHBOX,MailPlugin.SEARCHBOX_NAME);
		
		folderName.put(MailPlugin.INBOX_NAME,MailPlugin.INBOX);
		folderName.put(MailPlugin.OUTBOX_NAME,MailPlugin.OUTBOX);
		folderName.put(MailPlugin.TRASHBOX_NAME,MailPlugin.TRASHBOX);
		folderName.put(MailPlugin.ARCHIEBOX_NAME,MailPlugin.ARCHIEBOX);
		folderName.put(MailPlugin.SEARCHBOX_NAME,MailPlugin.SEARCHBOX);
	}

	/**
	 * The constructor
	 */
	public MailPlugin() {
		plugin = this;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
	 */
	public void start(BundleContext context) throws Exception {
		super.start(context);
		try {
			//暂只支持一个pop3邮箱
			System.setProperty("jp.gr.java_conf.roadster.net.pop.rootDirectory", ConfigHelper.getDataHome()+ "/data/mailbox/");
			//设置用户自定义的配置
			Map<String,String> map=ConfigHelper.getPopper();
			for(String key:map.keySet()){
				System.setProperty(POP3Store.BASE_PROPERTY+key, map.get(key));
			}
			//用一个空的authentication,解决service的classloader问题
			Session session = Session.getInstance(System.getProperties(), new Authenticator() {});
			session.setDebug(true);
			store = session.getStore(new URLName(ConfigHelper.getPop3()[0]));
			store.connect();
			store.getFolder("OUTBOX").create(Folder.HOLDS_MESSAGES);
			store.getFolder("TRASHBOX").create(Folder.HOLDS_MESSAGES);
			store.getFolder("ARCHIEBOX").create(Folder.HOLDS_MESSAGES);
			// 载入缓存
			{
				HashMap headersMap = new HashMap();
				FileInputStream fis = new FileInputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_INDEX_FILE);
				ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(fis, 1024));
				headersMap = (HashMap) ois.readObject();
				ois.close();
				MessageIndex.setHEADERS_MAP(headersMap);
			}
			{
				HashSet readSet=new HashSet();
				FileInputStream fis = new FileInputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_READ_FILE);
				ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(fis, 1024));
				readSet = (HashSet) ois.readObject();
				ois.close();
				FolderViewer.setReadSet(readSet);
			}
		} catch (FileNotFoundException fex) {
			;
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
	 */
	public void stop(BundleContext context) throws Exception {
		plugin = null;
		store.close();
		HashMap headersMap = MessageIndex.getHEADERS_MAP();
		if (!headersMap.isEmpty()) {
			FileOutputStream fos = new FileOutputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_INDEX_FILE);
			ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos, 1024));
			oos.writeObject(headersMap);
			oos.close();
		}
		Set readSet=FolderViewer.getReadSet();
		if(!readSet.isEmpty()){
			FileOutputStream fos = new FileOutputStream(ConfigHelper.getDataHome() + "/data/mailbox/" + MAIL_READ_FILE);
			ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(fos, 1024));
			oos.writeObject(readSet);
			oos.close();
		}
		super.stop(context);
	}

	/**
	 * Returns the shared instance
	 * 
	 * @return the shared instance
	 */
	public static MailPlugin getDefault() {
		return plugin;
	}

	/**
	 * Returns an image descriptor for the image file at the given plug-in
	 * relative path
	 * 
	 * @param path
	 *            the path
	 * @return the image descriptor
	 */
	public static ImageDescriptor getImageDescriptor(String path) {
		return imageDescriptorFromPlugin(PLUGIN_ID, path);
	}

	public Store getStore() {
		return store;
	}
	
	public static String convertFolderName(String name){
		return folderName.get(name);
	}
}

⌨️ 快捷键说明

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