www.pudn.com > JavaMailWithGUI.rar > MessageProcess.java


 
import java.io.*; 
import java.util.Vector; 
import javax.mail.Multipart; 
import javax.mail.Part; 
import javax.swing.JOptionPane; 
 
public class MessageProcess implements Serializable { 
	 
	public void multipartProcess( 
		Multipart mp, 
		MessageDS messageDS, 
		Vector recieveVector)  
	{ 
		try { 
			for (int i = 0; i < mp.getCount(); i++) { 
				String fileName = (mp.getBodyPart(i)).getFileName(); 
				 
				if (fileName == null)  
				{ 
					partProcess(mp.getBodyPart(i), messageDS, recieveVector); 
				}  
				else if (fileName != null)  
				{ 
					if (messageDS.getEnclosure() == null) 
						messageDS.setEnclosure(""); 
						 
					messageDS.setEnclosure( 
						messageDS.getEnclosure() + getStr(fileName) + ";"); 
 
					File f = new File("Enclosure", fileName); 
					FileOutputStream out = new FileOutputStream(f); 
					InputStream in = 
						new BufferedInputStream( 
							(mp.getBodyPart(i)).getInputStream()); 
 
					int b; 
					while ((b = in.read()) != -1) 
					{ 
						out.write(b); 
					}  
					 
					out.flush(); 
					out.close(); 
					in.close(); 
				} 
			} 
		}  
		catch (Exception e)  
		{ 
			JOptionPane.showMessageDialog(null, "Error:" + e.getMessage()); 
		} 
	} 
 
	// 
	public void partProcess( 
		Part p, 
		MessageDS messageDS, 
		Vector recieveVector)  
	{ 
		try { 
			String contentType = p.getContentType(); 
			File f; 
			f = new File( 
					"MailBox", 
					recieveVector.size() 
						+ findEmailAddress(messageDS.getAddress()) 
						+ ".txt"); 
 
			if (contentType.startsWith("text/plain")) { 
				FileOutputStream out = new FileOutputStream(f); 
				InputStream in = new BufferedInputStream(p.getInputStream()); 
				 
				int b; 
				while ((b = in.read()) != -1) 
				{ 
					out.write(b); 
				}  
				 
				out.flush(); 
				out.close(); 
				in.close(); 
 
				messageDS.setContent(""); 
				BufferedReader breader = new BufferedReader(new FileReader(f)); 
				String str = breader.readLine(); 
				 
				while (str != null) 
				{ 
					messageDS.setContent(messageDS.getContent() + str + "\n"); 
					str = breader.readLine(); 
				} 
				breader.close(); 
				messageDS.setIsHtml(false); 
 
			} 
			else if(contentType.startsWith("text/html") && messageDS.getIsHtml())  
			{ 
				FileOutputStream out = new FileOutputStream(f); 
				InputStream in = new BufferedInputStream(p.getInputStream()); 
				int b; 
				while ((b = in.read()) != -1) 
					out.write(b); 
				out.flush(); 
				out.close(); 
				in.close(); 
 
				messageDS.setContent(""); 
				BufferedReader breader = new BufferedReader(new FileReader(f)); 
				String str = breader.readLine(); 
				while (str != null) { 
					messageDS.setContent(messageDS.getContent() + str + "\n"); 
					str = breader.readLine(); 
				} 
				breader.close(); 
			}  
			else if (contentType.startsWith("multipart")) { // ±È½ÏÑϽ÷µÄÅÐ¶Ï 
				Multipart mp = (Multipart) p.getContent(); 
				multipartProcess(mp, messageDS, recieveVector); 
			} 
		} catch (Exception e) { 
			JOptionPane.showMessageDialog(null, "Error:" + e.getMessage()); 
		} 
	} 
 
	// 
	public String getStr(String str) { 
		try { 
			String temp_p = str; 
			byte[] temp_t = temp_p.getBytes("ISO8859-1"); 
			 
			String temp = new String(temp_t); 
			return temp; 
		} catch (Exception e) { 
			return new String(""); 
		} 
	} 
 
	// 
	public String findEmailAddress(String str) { 
		try { 
			int foreindex = str.indexOf("<"); 
			int backindex = str.indexOf("@"); 
			 
			if (foreindex != -1 && backindex != -1) 
				str = str.substring(foreindex + 1, backindex); 
			return str; 
 
		} catch (Exception e) { 
			return new String(""); 
		} 
	} 
}