📄 smtp_telnetlogin.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 + -