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

📄 receive.java

📁 这是我做的一个收发邮件的软件
💻 JAVA
字号:
package source;
import java.io.*;
import java.sql.ResultSet;
import java.text.SimpleDateFormat;
import java.util.*;

import javax.mail.Authenticator;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeUtility;

import org.eclipse.jface.dialogs.MessageDialog;

public class Receive {
	private String username;
	private String password;
	private String host;
	private String save_folder;
	private boolean flag;
	private String riqi;
	private DataBase db=new DataBase();
	public Receive()
	{
		getConfig();
		riqi=readdata("riqi.mai");
	}
	public void receive()
	{
        int message_count;
		Authenticator auth = new MyAuthenticator(username,password);
		Properties props = new Properties();
		Session session = Session.getDefaultInstance(props,auth);
		try 
		{
			
			Store store = session.getStore("pop3");
			store.connect(host,username,password);
			Folder folder = store.getFolder("INBOX");
			if(flag==true) //说明在读完邮件后删除邮件
			{
				folder.open(Folder.READ_WRITE);//以读写的方式打开
				message_count=folder.getMessageCount();
				Message[] message = folder.getMessages();
				for(int i = 0 ; i<message_count ;i++)
				{
					if(bodypparse(message[i],save_folder))//保存邮件正文
					{
						message[i].setFlag(Flags.Flag.DELETED, true);
					}
				}
				MessageDialog.openInformation(null, "系统提示", "收邮件结束!");
				folder.close(true);
			}
			else
			{
				folder.open(Folder.READ_ONLY);
				message_count=folder.getMessageCount();
				Message[] message = folder.getMessages();
				for(int i = 0 ; i<message_count ;i++)
				{
					this.bodypparse(message[i], save_folder);
				}
				MessageDialog.openInformation(null, "系统提示", "收邮件结束!");
				folder.close(false);
			}
			store.close();
		} 
		catch (Exception e) 
		{
			// TODO Auto-generated catch block
			MessageDialog.openError(null, "收邮件错误", "收邮件错误,请检查配置!");
		}
	}
	
	

	
	
	
	
	public boolean bodypparse(Message message,String save_folder)throws Exception
	{
		String title=" ";
		String content=" ";
		String s_name=" ";
		String r_name=" ";
		String s_addr=" ";
		String r_addr=" ";
		String sql="";
		int fujian=0;//附件数量
		String fujian_name=" ";//附件名字
		String fujian_addr=" ";//附件存储地址
		String  r_time=" ";
		String  s_time=" ";
		int size=0;//邮件大小
		Part part;
		part=(Part)message;
		
		db.connectToDB();//连接数据库
		s_name=message.getFrom()[0].toString();
		s_name=MimeUtility.decodeText(s_name);
		//JOptionPane.showMessageDialog(null, s_name);
		s_addr=message.getFrom()[0].toString();
		s_addr=MimeUtility.decodeText(s_addr);
		
		r_addr=message.getRecipients(Message.RecipientType.TO)[0].toString();
		r_addr=toGBK(r_addr);
		SimpleDateFormat sdf  =   new  SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); 
		Date date=new Date();
		r_time=sdf.format(date);
		Date s_date=new Date();
		
		if(message.getSentDate()!=null)
		{		
			s_date=message.getSentDate();
			s_time=sdf.format(message.getSentDate());
		}
		
		title=message.getSubject();
		
		if (part.isMimeType("text/plain") )
  		{
  			content=part.getContent().toString();//获得邮件内容
  			content=toGBK(content);
  			content=content.replaceAll("'","&&&");
  			content=content.replaceAll("\"","\\\"");
  			sql="insert into mail(title,content,s_name,r_name,s_addr,r_addr,s_time,r_time,size,fujian,fujian_name,fujian_addr) " +
				" values('"+title+"','"+content+"','"+s_name+"','"+r_name+"','"+s_addr+"','"+r_addr+"','"+s_time+"','"+r_time+"','"+size+"','"+fujian+"','"+fujian_name+"','"+fujian_addr+"')";
  			//MessageDialog.openInformation(null, "系统提示", "收邮件结束!");
  			db.executeInsert(sql);			
  			db.close();
  			return true;
  		} 
  		else if (part.isMimeType("text/html") )
  		{
  			content=part.getContent().toString();//获得邮件内容
  			content=toGBK(content);
  			content=content.replaceAll("'","&&&");
  			content=content.replaceAll("\"","\\\"");
  			sql="insert into mail(title,content,s_name,r_name,s_addr,r_addr,s_time,r_time,size,fujian,fujian_name,fujian_addr) " +
				" values('"+title+"','"+content+"','"+s_name+"','"+r_name+"','"+s_addr+"','"+r_addr+"','"+s_time+"','"+r_time+"','"+size+"','"+fujian+"','"+fujian_name+"','"+fujian_addr+"')";
  			
  			db.executeInsert(sql);
  			db.close();
  			return true;
  		} 
  		else if (part.isMimeType("multipart/*"))
  		{
   			Multipart multipart = (Multipart) part.getContent();
   			fujian = multipart.getCount();
   			
   			for (int i=0, n=fujian; i<n; i++) 
   			{
   				
   	   			if(multipart.getBodyPart(i).isMimeType("text/html")||multipart.getBodyPart(0).isMimeType("text/plain"))
				{
   	   				content=multipart.getBodyPart(0).getContent().toString();
   	   				content=toUTF(content);
   	   			    content=content.replaceAll("'","&&&");
   	  			    content=content.replaceAll("\"","\\\"");
   	   			}
   	   		
   				Part part2 = multipart.getBodyPart(i);
   				String disposition = part2.getDisposition();
   				
   				if ((disposition != null) && 
   				((disposition.equals(Part.ATTACHMENT) || 
   				(disposition.equals(Part.INLINE)))))
   				{
   					String   filenames=part2.getFileName();
   					size=part2.getSize();
   					filenames=MimeUtility.decodeText(filenames);//解决编码问题的;
   					int j=0;
   					j=filenames.lastIndexOf("\\");
   					filenames=filenames.substring(j+1); 
   					
   					fujian_name=filenames;
   					fujian_addr+=saveFile(save_folder+"\\"+fujian_name, part2.getInputStream());
   				}
   				
   			}
   			
  			sql="insert into mail(title,content,s_name,r_name,s_addr,r_addr,s_time,r_time,size,fujian,fujian_name,fujian_addr) " +
			" values('"+title+"','"+content+"','"+s_name+"','"+r_name+"','"+s_addr+"','"+r_addr+"','"+s_time+"','"+r_time+"','"+size+"','"+fujian+"','"+fujian_name+"','"+fujian_addr+"')";
			db.executeInsert(sql);
			db.close();	
			return true;
  		} 
		writedata(s_date);
		db.close();
  		return false;
	}	
	public String saveFile(String filename,InputStream input)
	{
		try {
			File file = new File(filename);
			int j=0;
			String zhui,qian;
			j=filename.lastIndexOf(".");
			
			qian=filename.substring(0,j);
			zhui=filename.substring(j); 
			String qian2="";
			for (int i=1; file.exists(); i++) 
			{	
				qian2=qian+"("+i+")";
				filename=qian2+zhui;
				file = new File(filename);
			}
			FileOutputStream output=new FileOutputStream(filename); 
			byte[] b=new byte[1024]; 
			int len; 
			while((len=input.read(b))!=-1) 
				{
					output.write(b,0,len); 
				}
			output.close();
			return filename;
		} catch (IOException e) {
			MessageDialog.openError(null, "收邮件错误", "附件保存失败!");
			e.printStackTrace();
			return filename;
		}
	}
	public String toGBK(String str)
	throws java.io.UnsupportedEncodingException
	{
		return new String(str.getBytes("ISO-8859-1"),"GBK");
    }
	

	public String toUTF(String str)
	throws java.io.UnsupportedEncodingException
	{
		return new String(str.getBytes("UTF-8"),"UTF-8");

    }
	public String toGB2312(String str)
	throws java.io.UnsupportedEncodingException
	{
		return new String(str.getBytes("ISO-8859-1"),"UTF-8");
    }
	
	public void writedata(Date date)
	{
		try
		{
			PrintWriter out = new PrintWriter(new FileWriter("riqi.mai"));
			SimpleDateFormat sdf  =   new  SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); 
			String datestr=sdf.format(date);
			out.println(""+datestr);
			out.close();
		}
		catch(IOException e0)
		{
			MessageDialog.openError(null, "收邮件错误", "读取数据错误!");
		}
	}
	
	public String readdata(String filename)
	{
		BufferedReader in;
		String s="";
		try
		{
			in=new BufferedReader(new FileReader(filename));
			if((s=in.readLine())!=null)
			{
				return s;
			}	
			in.close();
			return s;
		}
		catch(Exception e)
		{
			e.printStackTrace();
			MessageDialog.openError(null, "收邮件错误", "读取数据错误!");
			return s;
		}
		
	}
	private void getConfig()
	{
		try
		{
			DataBase db=new DataBase();
			db.connectToDB();
			ResultSet rs=null;
			String sql;
			sql="select  * from config where id=1";
			rs=db.executeQuery(sql);
			if(!rs.next())
			{
				MessageDialog.openError(null, "收邮件错误", "读取配置错误!");
				System.exit(0);
			}
			username=rs.getString("username");
			password=rs.getString("password");
			host=rs.getString("pop3");
			save_folder=rs.getString("save_folder");
			flag=rs.getBoolean("delete");
			db.close();
		}
		catch(Exception mex)
		{
			MessageDialog.openError(null, "收邮件错误", "读取配置错误!");
			mex.printStackTrace();
			System.exit(0);
		}
		
	}
}

⌨️ 快捷键说明

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