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

📄 smtp_telnetlogin.java

📁 用java实现的邮件服务器(Server 文件夹 用户名 文件夹 Send receive 文件夹 文件 时间.txt. 日志文件
💻 JAVA
字号:
package Server.SMTP;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import Server.Server;


public class SMTP_TelnetLogIn extends Server{

	private Socket socket;
	private Map<String, String> map = new HashMap<String, String>();

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

	// 初始化Map(用来用户信息表),并让其在随普通初始化块一起初始化,以方便后面的读取
	public void setHashMap() {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream(SMTP_Final.userInfo);
			Properties prop = new Properties();
			prop.load(fis);
			Enumeration enumer = prop.propertyNames();
			while (enumer.hasMoreElements()) {
				String username = (String) enumer.nextElement();
				String password = prop.getProperty(username);
				map.put(username, password);
			}
		} catch (FileNotFoundException e) {

			e.printStackTrace();
		} catch (IOException e) {

			e.printStackTrace();
		}
	}
	
	// 读取用户的信息
	public boolean readUserInfoFromHashMap(String username, String password) {
		boolean flag = false;
		if (map.containsKey(username)) {
			if (map.get(username).equals(password)) {
				flag = true;
			}
		}
		return flag;
	}
	
	
	
	

	public void logIn() {
		try {
			//加载用户信息表
			setHashMap();
			//建立socket通讯
			BufferedReader br = new BufferedReader(new InputStreamReader(socket
					.getInputStream()));
			PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket
					.getOutputStream()),true);
			//用户选择操作界面
			pw.println("欢迎光临SMTP服务器!");
			pw.println("选择您想要进行的操作!");
			pw.println("1:登陆邮箱");
			pw.println("2:注册新用户");
			pw.println("3:离开服务器");
			String str=null;
			if((str=br.readLine()).equals("1")){
				//检测该用户的合法性和存在性
				pw.println("请输入您的用户名:");
				String name=br.readLine();
				pw.println("请输入您的密码:");
				String password=br.readLine();
				if(readUserInfoFromHashMap(name,password)){
					//合法用户直接进入下一级操作菜单(最好能直接清屏)
					pw.println();
					pw.println("登陆成功,请选择您要进行的操作!");
					new SMTP_CreateUserDir(name);
					userOperating(br,pw);
				}else{
					//非法用户提示其进行注册,并返回到上一级的页面
					pw.println("数据库中没有您的信息,请注册一个新用户!");
					logIn();
				}
				
			}else if(str.equals("2")){
				//注册一个新的用户,并为其分配一个新的邮箱,并且将其放入到属性文件和map中,再返回到登陆注册的那个页面
				pw.println("欢迎你来注册新用户:");
				SMTP_TelnetUserRegister reg=new SMTP_TelnetUserRegister(socket);
				reg.start();
				reg.join();
				logIn();
			}else if(str.equals("3")){
				//离开该邮件服务器
				pw.println("欢迎您的再次光临!");
				socket.close();
			}else {
				//踢出去
				pw.println("您即将失去和服务器的连接,请重新登陆!");
				socket.close();
			}
		} catch (IOException e) {
			
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

	}
	
	public void userOperating(BufferedReader br,PrintWriter pw){
		String str=null,receiveMailAddress=null,sendMailAddress=null,subject=null;
		try {
			pw.println("请选择您想要进行的操作!");
			pw.println("1.发送邮件");
			pw.println("2.返回到首页");
			if((str=br.readLine()).equals("1")){
				pw.println();
				pw.println("请严格按照提示进行操作!");
				pw.println("请输入您的完整邮件地址:");
				sendMailAddress=br.readLine();
				pw.println("请输入收件人的完整邮件地址:");
				receiveMailAddress=br.readLine();
				pw.println("请输入您的邮件的主题:");
				subject=br.readLine();
				pw.println("请输入您的邮件的内容:(注意!不能以"+"."+"作为每一行的开始!");
				while(!(str=br.readLine()).startsWith(".")){
					//将读入的每一行数据写入到收件箱和发件箱
				}
			}else if(str.equals("2")){
				pw.println();
				logIn();
			}else{
				pw.println("您选择的项目不存在,请重新输入!");
				pw.println();
				userOperating(br,pw);
			}
		} catch (IOException e) {
            System.out.println("报错原因:");
            System.out.println(e.toString());
			System.out.println("从客户端读取信息为空!");
		}
	}
	
	
	public void run() {
		logIn();
	}

}

⌨️ 快捷键说明

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