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

📄 messageprocess.java

📁 一个java实现的邮件服务器系统 使用邮件客户端工具
💻 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("");
		}
	}
}

⌨️ 快捷键说明

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