亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? smtpservice.java

?? Java 郵件服務器 解析SMTP和POP3傳輸協議
?? JAVA
字號:
package com.softeem.myMail.smtp;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.Properties;

public class SMTPService implements Runnable {
	private Socket socket;

	private BufferedReader br;

	private BufferedWriter bf;

	private BufferedWriter bw;

	private OutputStream bp;

	private String scr;

	private Date date;

	Properties prop = new Properties();

	public SMTPService(Socket socket) {
		this.socket = socket;
	}

	public void init() {
		try {
			// 解析屬性文件得到對應的值
			InputStream in = new FileInputStream("config.properties");
			prop.load(in);
			in.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public void run() {
		try {
			br = new BufferedReader(new InputStreamReader(socket
					.getInputStream()));
			bw = new BufferedWriter(new OutputStreamWriter(socket
					.getOutputStream()));
			bp = new FileOutputStream(new File("config.properties"), true);
			sendWelcomeMessage();
			while (prastCommand(br.readLine())) {

			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				bw.close();
				br.close();
				bf.close();
				bp.close();
				socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	// 歡迎信息
	private void sendWelcomeMessage() {
		StringBuffer welcomMessage = new StringBuffer();
		welcomMessage.append("220").append(" ").append(
				socket.getInetAddress().getHostAddress()).append(" ").append(
				"mail server v1.0").append(" ").append("for java23");
		writerMessage(welcomMessage.toString());
	}

	/*
	 * HELO java23 
	 * MAIL FROM:<frank@localhost.com> 
	 * RCPT TO:<to@localhost.com>
	 * DATA QUIT 解析服務器的指令
	 */
	private boolean prastCommand(String command) {
		Boolean flag = true;
		// 從發送的消息中獲得空格的位置
		int spaceIndex = command.indexOf(" ");
		String argument = null;
		// 這種方式解決沒輸空格的錯誤
		if (spaceIndex > 0) {
			// 獲得具體的消息
			argument = command.substring(spaceIndex + 1);
			// 獲得指令
			command = command.substring(0, spaceIndex);
		}
		if (command.equalsIgnoreCase("HELO")) {
			doHELO(argument);
		} else if (command.equalsIgnoreCase("MAIL")) {
			doMAIL(argument);
		} else if (command.equalsIgnoreCase("RCPT")) {
			doRCPT(argument);
		} else if (command.equalsIgnoreCase("DATA")) {
			doDATA(argument);
		} else if (command.equalsIgnoreCase("QUIT")) {
			doQUIT(argument);
			return flag = false;
		} else {
			writerMessage("501 Syntax error in MAIL command");
		}
		return flag;
	}

	private void doHELO(String argument) {
		StringBuffer responseBuff = new StringBuffer();
		if (argument.length() == 0) {
			responseBuff.append("250").append(" ").append("null").append(" ")
					.append("OK");
		} else
			responseBuff.append("250").append(" ").append(argument).append(" ")
					.append("OK");
		writerMessage(responseBuff.toString());
	}

	private void doMAIL(String argument) {
		init();
		StringBuffer responseBuffer = new StringBuffer();
		String responseString;
		String sender = null;
		// 判斷消息是否為空和是否輸入:號
		if ((argument == null) || (argument.indexOf(":") == -1)) {
			responseString = "501 Usage: MAIL FROM:<sender>";
			writerMessage(responseString);
		} else if ((argument != null) && (argument.indexOf(":") > 0)) {
			// 獲得:號的位置
			int colonIndex = argument.indexOf(":");
			// 獲得:號之前的字段
			sender = argument.substring(colonIndex + 1);
			argument = argument.substring(0, colonIndex);
			// 獲得"<",">","@"的位置
			int less = sender.indexOf("<");
			int max = sender.indexOf(">");
			int a = sender.indexOf("@");
			// 將所有的字母轉換為大寫
			if (!argument.toUpperCase(Locale.US).equals("FROM")) {
				responseString = "501 Usage: MAIL FROM:<sender>";
				writerMessage(responseString);

			} else if (less == -1 || max == -1 || a == -1) {
				responseString = "501 Usage: MAIL FROM:<sender>";
				writerMessage(responseString);
			} else if (less != -1 && max != -1 && a != -1) {
				// 獲得名稱,類型,域名
				String str1 = sender.substring(less, a);
				String str2 = sender.substring(a + 1, max);
				String str3 = sender.substring(max + 1);
				if (str1.length() == 0 || str2.length() == 0
						|| str3.length() != 0) {
					responseString = "501 Usage: MAIL FROM:<sender>";
					writerMessage(responseString);
				} else {
					// 獲得發送者的名字
					sender = sender.substring(less + 1, a);
					if (prop.getProperty(sender) == null) {
						// 創建發送者郵箱
						File fSendbox = new File("E:\\mail\\" + sender
								+ "\\senderbox");
						fSendbox.mkdirs();
						File freceive = new File("E:\\mail\\" + sender
								+ "\\receivebox");
						freceive.mkdirs();
						// 在屬性文件中存入發件箱的用戶名和密碼
						prop.put(sender, "123");
						try {
							prop.store(bp, null);
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					responseBuffer.append("250 Sender <").append(sender)
							.append("> OK");
					writerMessage(responseBuffer.toString());
				}
			}
		}
	}

	private void doRCPT(String argument) {
		init();
		// 獲得當前的時間
		date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-MM-SS");
		String formateDate = sdf.format(date);
		StringBuffer responseBuffer = new StringBuffer();
		String responseString;
		String recipient = null;
		if ((argument == null) || (argument.indexOf(":") == -1)) {
			responseString = "501 Usage: MAIL FROM:<recipient>";
			writerMessage(responseString);
		} else if ((argument != null) && (argument.indexOf(":") > 0)) {
			// 獲得:號的位置
			int colonIndex = argument.indexOf(":");
			// 獲得:號之前的字段
			recipient = argument.substring(colonIndex + 1);
			argument = argument.substring(0, colonIndex);
			// 獲得"<",">","@"的位置
			int less = recipient.indexOf("<");
			int max = recipient.indexOf(">");
			int a = recipient.indexOf("@");
			// 將所有的字母轉換為大寫
			if (argument == null
					|| !argument.toUpperCase(Locale.US).equals("TO")
					|| recipient == null) {
				responseString = "501 Usage: MAIL FROM:<recipient>";
				writerMessage(responseString);

			} else if (less == -1 || max == -1 || a == -1) {
				responseString = "501 Usage: MAIL FROM:<recipient>";
				writerMessage(responseString);
			} else if (less != -1 && max != -1 && a != -1) {
				// 獲得名稱,類型,域名
				String str1 = recipient.substring(less, a);
				String str2 = recipient.substring(a + 1, max);
				String str3 = recipient.substring(max + 1);
				if (str1.length() == 0 || str2.length() == 0
						|| str3.length() != 0) {
					responseString = "501 Usage: MAIL FROM:<recipient>";
					writerMessage(responseString);
				} else {
					// 獲得接收者的名字
					recipient = recipient.substring(less + 1, a);
					scr = recipient;
					if (prop.getProperty(recipient) == null) {
						// 創建接收者郵箱
						File fSendbox = new File("E:\\mail\\" + recipient
								+ "\\senderbox");
						fSendbox.mkdirs();
						File freceive = new File("E:\\mail\\" + recipient
								+ "\\receivebox");
						freceive.mkdirs();
						try {
							// 在接收者郵箱用時間為名字創建郵件
							bf = new BufferedWriter(new OutputStreamWriter(
									new FileOutputStream(new File("E:\\mail\\"
											+ scr + "\\receivebox\\"
											+ formateDate + ".txt"))));
						} catch (FileNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
						// 在屬性文件中存入收件箱的用戶名和密碼
						prop.put(recipient, "123");
						try {
							prop.store(bp, null);
						} catch (IOException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					} else {
						try {
							bf = new BufferedWriter(new OutputStreamWriter(
									new FileOutputStream(new File("E:\\mail\\"
											+ scr + "\\receivebox\\"
											+ formateDate + ".txt"))));
						} catch (FileNotFoundException e) {
							// TODO Auto-generated catch block
							e.printStackTrace();
						}
					}
					responseBuffer.append("250 Recipient <").append(recipient)
							.append("> OK");
					writerMessage(responseBuffer.toString());
				}
			}
		}

	}

	private void doDATA(String argument) {
		StringBuffer responseBuffer = new StringBuffer();
		String responseString = null;
		responseString = "354 Ok Send data ending with <CRLF>.<CRLF>";
		writerMessage(responseString);
		try {
			// 獲取信息
			String str = br.readLine();
			// 判斷寫的信息是否以"."結尾
			while (!str.equals(".")) {
				writerFile(str);
			}
			responseBuffer.append("250 OK COMMAND IMPLEMENTS");
			writerMessage(responseBuffer.toString());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private void doQUIT(String argument) {
		try {
			StringBuffer responseBuff = new StringBuffer();
			responseBuff.append("250 coremail");
			writerMessage(responseBuff.toString());
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	// 將信息寫入文件
	private void writerFile(String responseBuffer) {
		try {
			bf.write(responseBuffer);
			bf.newLine();
			bf.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	private void writerMessage(String massager) {
		try {
			bw.write(massager);
			bw.newLine();
			bw.flush();
		} catch (IOException e) {

			e.printStackTrace();
		}

	}
	// private void writerProperties(String keyValue) {
	// try {
	// bp.write(keyValue);
	// bp.newLine();
	// bp.flush();
	//			
	// } catch (IOException e) {
	// e.printStackTrace();
	// }
	//			
	// }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区高清| 91看片淫黄大片一级在线观看| 亚洲自拍都市欧美小说| 中文幕一区二区三区久久蜜桃| 精品国产3级a| 精品国产99国产精品| 日韩精品在线一区二区| 91精品国产一区二区三区蜜臀| 欧美体内she精高潮| 欧美写真视频网站| 精品视频123区在线观看| 欧美三级日韩在线| 精品视频色一区| 日韩一区二区电影网| 日韩美女视频在线| 久久影视一区二区| 欧美激情一二三区| 亚洲一区免费视频| 首页国产欧美久久| 美女视频黄免费的久久| 免费成人av资源网| 国产九九视频一区二区三区| 成人av动漫在线| 91成人免费在线| 欧美成人a视频| 国产精品国模大尺度视频| 亚洲激情校园春色| 香蕉成人啪国产精品视频综合网 | 国产女主播在线一区二区| 日本一区二区在线不卡| 自拍偷自拍亚洲精品播放| 亚洲成人资源在线| 国产高清精品网站| 欧美日韩国产美| 日本一区二区免费在线观看视频| 亚洲精品视频免费观看| 日本视频一区二区| av在线一区二区| 8x8x8国产精品| 亚洲婷婷国产精品电影人久久| 午夜欧美视频在线观看| 国产成人精品在线看| 欧美在线色视频| 久久精品亚洲麻豆av一区二区| 一个色综合av| 成人网男人的天堂| 欧美一级免费大片| 日韩毛片一二三区| 韩国三级电影一区二区| 欧美日韩卡一卡二| 国产精品传媒在线| 久久国产免费看| 欧美日韩色综合| 亚洲免费观看高清完整| 国产在线精品一区在线观看麻豆| 欧美精品乱码久久久久久按摩| 国产精品久久久久久久久免费丝袜| 日本视频在线一区| 欧美蜜桃一区二区三区| 综合久久久久久| 国产成人精品午夜视频免费| 91精品国产综合久久久久久漫画 | 91精品国产一区二区三区香蕉| 最新久久zyz资源站| 岛国精品在线播放| 欧美精品一区二区三区四区 | 成人免费黄色在线| 国产偷v国产偷v亚洲高清| 免费三级欧美电影| 制服.丝袜.亚洲.中文.综合| 亚洲精品国产品国语在线app| 成人福利视频在线看| 国产欧美中文在线| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产精品一级二级三级| 日韩美女视频在线| 国内外成人在线| 精品成a人在线观看| 久久福利资源站| 日韩精品一区二| 国产高清精品久久久久| 国产三级久久久| aaa亚洲精品| 亚洲精品国产精品乱码不99| 在线看日本不卡| 亚洲成av人**亚洲成av**| 欧美电影一区二区| 麻豆精品视频在线| 久久久综合九色合综国产精品| 久久精品国产成人一区二区三区 | 国产精品免费视频观看| 成人动漫一区二区在线| 国产精品日产欧美久久久久| av福利精品导航| 亚洲午夜一区二区| 精品国产免费一区二区三区香蕉| 美国毛片一区二区三区| wwwwww.欧美系列| 99精品久久只有精品| 亚洲午夜久久久久久久久久久| 欧美日产在线观看| 极品美女销魂一区二区三区免费| 91精品国产美女浴室洗澡无遮挡| 久久国产欧美日韩精品| 日韩一区日韩二区| 欧美日本在线播放| 国产精品99久久不卡二区| 国产精品久久久久久久蜜臀| 色哟哟在线观看一区二区三区| 天天色综合成人网| 中文字幕中文乱码欧美一区二区 | 欧美一二三区在线观看| 国产在线视频精品一区| 亚洲老妇xxxxxx| 日韩女优制服丝袜电影| aaa欧美色吧激情视频| 视频一区欧美日韩| 国产精品进线69影院| 日韩欧美一级片| 在线免费精品视频| 国产精品888| 亚洲成av人片观看| 亚洲欧美一区二区在线观看| 欧美一区二区三区啪啪| 91美女蜜桃在线| 国产精品一区一区三区| 亚洲福利一二三区| 1000部国产精品成人观看| 欧美成人性战久久| 久久色成人在线| 欧美亚洲一区二区三区四区| 国产福利一区二区三区| 另类专区欧美蜜桃臀第一页| 亚洲女性喷水在线观看一区| 久久女同互慰一区二区三区| 欧美日韩久久久| 色嗨嗨av一区二区三区| 成人中文字幕在线| 国产一区二区0| 久久99久久99精品免视看婷婷 | 久久青草国产手机看片福利盒子| 欧美精品久久久久久久多人混战 | 亚洲视频1区2区| 国产亚洲综合色| 久久综合色8888| 日韩精品专区在线影院重磅| 8x8x8国产精品| 欧美日韩国产在线观看| 色999日韩国产欧美一区二区| 成人免费毛片a| av男人天堂一区| 97国产精品videossex| 不卡一二三区首页| 丁香一区二区三区| 粉嫩久久99精品久久久久久夜| 久久国产精品露脸对白| 久久国产精品一区二区| 久久精品国产精品青草| 精品一区二区三区在线观看国产| 日韩高清一级片| 久久99国产精品尤物| 韩国v欧美v亚洲v日本v| 国产成人亚洲综合a∨猫咪| 国产一区二区免费视频| 懂色av一区二区三区免费观看 | 国内久久精品视频| 加勒比av一区二区| 国产99久久精品| 色婷婷综合五月| 欧美放荡的少妇| 欧美电影免费观看高清完整版在线 | 国产欧美1区2区3区| 国产精品成人网| 亚洲成a人v欧美综合天堂| 日本va欧美va瓶| 国产成人在线网站| 91网站视频在线观看| 欧美日韩你懂得| 久久久久久一二三区| 日韩美女视频19| 五月激情六月综合| 国产精品1024| 色哟哟欧美精品| 欧美一区二区三区视频免费| 久久综合久久鬼色中文字| 亚洲三级在线看| 麻豆免费精品视频| 91亚洲男人天堂| 91精品国产麻豆国产自产在线| 日韩欧美在线123| 国产精品乱人伦| 蜜臀91精品一区二区三区| 高清成人在线观看| 91精品欧美久久久久久动漫| 国产精品女上位| 久久国产福利国产秒拍| 色成人在线视频| 国产蜜臀av在线一区二区三区| 亚洲高清免费一级二级三级| 国产激情精品久久久第一区二区|