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

📄 emailmanage.java

📁 电子邮件收发系统,采用各种技术进行研究开发适用大学生课程设计
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package net.meybo.mail.client;

import java.io.*;

import javax.mail.*;
import javax.mail.internet.*;

import net.meybo.mail.ActiveUser;
import net.meybo.mail.Config;
import net.meybo.util.CommUtil;

import net.meybo.util.XMLTool;

import org.apache.log4j.Logger;

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;

import org.dom4j.*;

import com.easyjf.web.tools.*;
/**
 * 邮件处理实用方法封装类
 * <p>Title: </p>
 * <p>Description: 主要对从邮件服务器上收到的邮件进行处理</p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: 脉博软件</p>
 * @author 蔡世友
 * @version 1.0
 */
public abstract class EmailManage {
	static final String keyFile = Config.getMailPath() + "\\key.txt";
	private static final Logger logger = (Logger) Logger.getLogger(EmailManage.class.getName());	
	private static final String systemBox="newbox,新邮箱;inbox,收件箱;files,共享文件夹;delbox,垃圾箱;sendbox,发件箱;draftbox,草稿箱";
	private static final SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm");
	private static final DecimalFormat cf=new DecimalFormat(".00");
	private static final Map boxes=new HashMap();
	public static void init()
	{
		String[] s=systemBox.split(";");
		if(s!=null)
		{
			for(int i=0;i<s.length;i++)
			{
			String[] t=s[i].split(",");
			if(t!=null && t.length>1)
			{
			boxes.put(t[0],t[1]);	
			}
			}
		}
	}
	public static String caculateByte(float size)
	{
		float si=size/1024f;
		 String sizeInfo="";
		 if(si/1024>1)
		 {
			 sizeInfo=cf.format(si/1024f)+"MB";
		 }
		 else sizeInfo=cf.format(si)+"KB";
		 return sizeInfo;
	}
	public static Map countMail(String mailDirPath)
	{
		Map box=new HashMap();		
		 long size=0l;
		 int num=0;
		File f=new File(mailDirPath);		
		if(f.exists())
		{
		 File[] files=f.listFiles();
		 if(files!=null)
		 {			
			 for(int i=0;i<files.length;i++)
			 {
				 size+=files[i].length();
				 num++;
			 }			 
		 }		
		}
		 box.put("diskSize",new Long(size));
		 box.put("num",new Integer(num));
		 box.put("newNum",new Integer(0));				 
		 box.put("sizeInfo",caculateByte(size));
		return box;
	}
	public static List getMailBoxInfo(String userName,String domain)
	{
	
		List list=new ArrayList();
		String mailPath=Config.getMailPath()+"/"+domain+"/"+userName;
		Map box=countMail(mailPath+"/newbox");
		box.put("name","新邮件");
		box.put("id","newbox");
		list.add(box);
		box.put("newNum",box.get("num"));
		int newNum=((Integer)box.get("newNum")).intValue();
		long diskSize=((Long)box.get("diskSize")).longValue();
		
		box=countMail(mailPath+"/inbox");
		box.put("name","收件箱");
		box.put("id","inbox");
		box.put("newNum",new Integer(newNum));
		box.put("num",new Integer(((Integer)box.get("num")).intValue()+newNum));
		box.put("diskSize",new Long(((Long)box.get("diskSize")).longValue()+diskSize));
		box.put("sizeInfo",caculateByte(((Long)box.get("diskSize")).longValue()));
		list.add(box);
		box=countMail(mailPath+"/draftbox");
		box.put("name","草稿箱");
		box.put("id","draftbox");
		list.add(box);
		box=countMail(mailPath+"/sendbox");
		box.put("name","发件箱");
		box.put("id","sendbox");
		list.add(box);
		box=countMail(mailPath+"/delbox");
		box.put("name","垃圾箱");
		box.put("id","delbox");
		list.add(box);		
		File[] dirs=new File(mailPath).listFiles();
		if(dirs!=null){
		for(int i=0;i<dirs.length;i++)
		{
			if(systemBox.indexOf(dirs[i].getName())<0 && dirs[i].isDirectory()){
			box=countMail(mailPath+"/"+dirs[i].getName());
			box.put("name",dirs[i].getName());
			box.put("id",dirs[i].getName());
			list.add(box);}
		}		
		}
		return list;
	}
	public static List getMailDir(String userName,String domain)
	{	
		List list=new ArrayList();
		String mailPath=Config.getMailPath()+"/"+domain+"/"+userName;
		Map box=new HashMap();		
		box.put("name","收件箱");
		box.put("id","inbox");
		list.add(box);	
		box=new HashMap();
		box.put("name","草稿箱");
		box.put("id","draftbox");
		list.add(box);
		box=new HashMap();
		box.put("name","发件箱");
		box.put("id","sendbox");
		list.add(box);
		box=new HashMap();
		box.put("name","垃圾箱");
		box.put("id","delbox");
		list.add(box);		
		File[] dirs=new File(mailPath).listFiles();
		if(dirs!=null){
		for(int i=0;i<dirs.length;i++)
		{
			if(systemBox.indexOf(dirs[i].getName())<0 && dirs[i].isDirectory()){
			box=new HashMap();
			box.put("name",dirs[i].getName());
			box.put("id",dirs[i].getName());
			list.add(box);}
		}	
		}
		return list;
	}
	public static List getMyDir(String userName,String domain)
	{	
		List list=new ArrayList();
		String mailPath=Config.getMailPath()+"/"+domain+"/"+userName;
		Map box=new HashMap();					
		File[] dirs=new File(mailPath).listFiles();
		if(dirs!=null){
		for(int i=0;i<dirs.length;i++)
		{
			if(systemBox.indexOf(dirs[i].getName())<0 && dirs[i].isDirectory()){
			box=new HashMap();
			box.put("name",dirs[i].getName());
			box.put("id",dirs[i].getName());
			list.add(box);}
		}		
		}
		return list;
	}
	public static List getMailList(String userName,String domain,String boxName)
	{
		List list=new ArrayList();
		String mailPath=Config.getMailPath()+"/"+domain+"/"+userName+"/"+boxName;		
		long size=0l;
		int num=0;
		 File f=new File(mailPath);
		 File[] files=f.listFiles();		 
		 if(files!=null)
		 {			
			 Session mailsession = Session.getInstance(System.getProperties(),null);
			 for(int i=0;i<files.length;i++)
			 {  
				 FileInputStream in=null;
				 try{
				in=new FileInputStream(files[i]);
				//System.out.println(in.available());
				MimeMessage mail=new MimeMessage(mailsession,in);
				ParseMimeMessage m=new ParseMimeMessage(mail);
				if(mail!=null)
				{
					Map email=new HashMap();
					email.put("id",files[i].getName());
					//Multipart body=null;	
					m.getMailContent();				
					if(m.isContainAttach())email.put("attachement","true");					
					email.put("title",m.getSubject());
					email.put("vdate",m.getSentDate());				
					email.put("mailSize",caculateByte(mail.getSize()));
					email.put("sender",m.getFrom());					
					list.add(email);
				}
				in.close();
				}
				 catch(Exception e)
				 {
					 System.out.println("邮件列表错误!"+e);
					 try{
					if(in!=null)in.close();
					 }
					 catch(Exception e1)
					 {
						// System.out.println(e1);
						 
					 }
				 }
				 
			 }					 
		 }
		
		return list;
	}

	public static int delMail(String userName,String domain,List mails)
	{
		int ret=0;
		String basePath=Config.getMailPath()+"/"+domain+"/"+userName+"/";
	    Iterator it=mails.iterator();
	    while(it.hasNext())
	    {
	    String path=basePath+(String)it.next();
	    System.out.println(path);
	    File file=new File(path);
	    if(file.delete())
	    ret++;
	    }		
		return ret;
	}
	public static int moveMail(String userName,String domain,String newBox,List mails)
	{
		int ret=0;
		String basePath=Config.getMailPath()+"/"+domain+"/"+userName+"/";
	    Iterator it=mails.iterator();
	    while(it.hasNext())
	    {
	    String fileName=(String)it.next();
	    String newName=fileName.substring(fileName.lastIndexOf("/"));
	    String path=basePath+fileName;	    
	    File file=new File(path);
	    if(file.renameTo(new File(basePath+newBox+"/"+newName)))
	    ret++;
	    }		
		return ret;
	}	
	public static MimeMessage getMail(String userName,String domain,String box,String cid)
	{
		MimeMessage mail=null;		
		Session mailsession = Session.getInstance(System.getProperties(),null);
		try{
		String filePath=Config.getMailPath()+"/"+domain+"/"+userName+"/"+box+"/"+cid;
		if(box.equals("inbox"))if(! new File(filePath).exists())
		{
		File file=new File(Config.getMailPath()+"/"+domain+"/"+userName+"/newbox/"+cid);
		if(file.exists())file.renameTo(new File(filePath));
		}
		InputStream in=new FileInputStream(filePath);		
		mail=new MimeMessage(mailsession,in);
		in.close();
		}
		catch(Exception e)
		{
			System.out.println("读取邮件错误!"+e);
		}
		return mail;
	}
	public static String getMailContent(MimeMessage mail)
	{	
		String content="";
		try{
			Multipart body=(Multipart)mail.getContent();
			content=getContent(body);
		}
		catch(Exception e)
		{
			System.out.println("内容错误!"+e);
		}
		return content;
	}
	private static String getContent(Multipart part) throws Exception
	{
			String content="";
			System.out.println(part.getCount());
			for(int j=0;j<part.getCount();j++)
			{
				String disposition=part.getBodyPart(j).getDisposition();
				Object obj=part.getBodyPart(j).getContent();
				System.out.println(part.getBodyPart(j).getContent().getClass()+disposition);
				if(obj.getClass()==String.class)
				{content=(String)obj;					
				}
				else if(obj.getClass()==MimeMultipart.class)
				{
				content=getContent((Multipart)obj);	
				}				
				//if(disposition==null)content=(String)body.getBodyPart(j).getContent();
				//if(disposition!=null && ((disposition.equals(Part.ATTACHMENT)||(disposition.equals(Part.INLINE)))))email.put("attachement","true");						
			}
		
		return content;
	}
	//
	public static List formatAddress(String s)
	{
		if(s==null || s.equals(""))return null;
		//String s="caishiyou@21cn.com<蔡世友1>,ddd@ccc.com<ddd>,tt,meybo@cai";
		String[] t=s.split(",");
		List list=null;
		if(t!=null)
		{
			list=new ArrayList();
			for(int i=0;i<t.length;i++)
			{
				String name,email;
				String tmp=t[i];
				int tagN=tmp.indexOf("<");
				if(tagN>0)
				{
					email=tmp.substring(tagN+1,tmp.indexOf(">",tagN));
					name=tmp.substring(0,tagN);
				}
				else if(tmp.indexOf("@")>0)
				{	
					name=tmp.substring(0,tmp.indexOf("@"));
					email=tmp;
				}
				else
				{
					name=tmp;
					email=tmp;
				}
				Map map=new HashMap();
				map.put("name",name);
				map.put("email",email);				
				list.add(map);
			}
		}
		return list;
	}
	
	/***************************************************************************
	 * 函 数 名:sendMail(String server,String user,String password,String
	 * reveiver,String subject,String body) 功 能:发邮件 参 数:server 服务器名,user
	 * password 用户密码,reveiver 收件人, subject 标题,body 内容 返 回 值:int 编 程:老阚 修 改 人:
	 * 编写日期:2004-8-11 修改日期: 调用函数:无 修改说明:
	 **************************************************************************/
	public static int sendMail(String server, String user, String password,
			String reveiver, String subject, String body) {
		int ret = 0;
		String hostname = "";
		String domain = "";
		if (!server.equals("") && (server.indexOf("#") != -1)) {
			domain = server.substring(server.indexOf("#") + 1);
			hostname = server.substring(0, server.indexOf("#"));
		}
		String sender = user + "@" + domain;
		Properties props = new Properties();// 也可用Properties props =
											// System.getProperties();
		props.put("mail.smtp.host", hostname);// 存储发送邮件服务器的信息
		props.put("mail.smtp.auth", "true");// 同时通过验证
		Session s = Session.getInstance(props);// 根据属性新建一个邮件会话
		s.setDebug(true);
		try {
			MimeMessage newMessage = new MimeMessage(s);
			InternetAddress from = new InternetAddress(sender);
			newMessage.setFrom(from);// 设置发件人
			InternetAddress[] replyto = new InternetAddress[1];
			replyto[0] = from;
			newMessage.setReplyTo(replyto);
			newMessage.setSubject(subject);
			newMessage.setSentDate(new java.util.Date());
			Multipart multipart = new MimeMultipart();

⌨️ 快捷键说明

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