资源下载地址:https://download.csdn.net/download/sheziqiong/86790177
资源下载地址:https://download.csdn.net/download/sheziqiong/86790177
目录
一、 项目选题 2
程序功能: 2
二、 开发环境和工具 2
三、 项目使用说明手册 2
四、 系统结构 2
- 项目目录结构 2
- 系统执行过程 3
五、 系统内核心实现 4 - 模块动态加载 4
- 对webpage下的服务进行扫描 4
- 通过retr命令获取邮件,并且通过json格式返回到web前端 5
- 配置文件的读取 6
六、 项目运行截图 7 - 首页 7
- 邮箱邮件查询 7
- 邮件发送 8
- 邮件详情 9
- 配置文件设置 9
- Web服务器错误页 10
- Web服务器主页 10
- 两个不同的邮箱进行测试 11
一、项目选题
基于实现的一个Web服务器的网页版邮箱客户端系统
项目中的服务器为自己实现的Web服务器,对http访问进行响应
项目中的邮箱客户端是基于socket进行smtp和pop3邮箱连接的客户端实现
该项目将Web服务器和邮件客户端两个项目选题相结合
程序功能:
1.Web服务器功能对响应的HTTP资源的请求和对于邮件api的访问给予响应
2.邮件能够实现查询邮件,本文转载自http://www.biyezuopin.vip/onews.asp?id=15154查看邮件详细信息,删除邮件,发送邮件,邮件返回分页等功能
3.此项目在163邮箱和qq邮箱测试成功
二、开发环境和工具
系统环境 Windows10 1903
开发工具 Intellij Idea Ultimate 2019、WebStorm、Chrome
jdk版本 12.0.2(如果在jdk1.8的情况下报错,请按照错误修改)
三、项目使用说明手册
1.使用idea加载并打开工程
2.在serverConfig.properties文件中进行相关的配置文件的配置
3.浏览器输入http://127.0.0.1:8080/index.html进入主页面(如果未修改配置文件信息),输入不存在的资源目录则进入错误页面
4.浏览器输入http://127.0.0.1:8080/mailAgentWeb/index.html进入邮箱客户端web主页面
5.在该页面可以实现邮件查询、邮件删除、邮件详细信息查看等功能,切换tab可以使用邮件发送功能 。
import net.sf.json.JSONObject;
import java.io.*;
import java.net.Socket;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MailAgentThread extends WebService {
private InputStream in = null;
private OutputStream out = null;
private Map<String, String> params = null;
//用来保存对应的smtp的地址和对应的认证信息等
private Map<String, List<String>> serverAddressInfo = null;
//账号:2403116996
//授权码:xevyrfcqimxfdhia
MailAgentThread(Socket socket) {
try {
this.in = socket.getInputStream();
this.out = socket.getOutputStream();
this.params = new HashMap<>();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void run() {
boolean state = false;
String apiInfo = readApiInfo(this.in);
params.clear();
if (!apiInfo.contains("?")) {
System.out.println("[万恶之原]mailAgentService请求中未带有参数!");
reportError();
return;
}
for (String item : apiInfo.split("\\?")[1].split("&")) {
params.put(item.split("=")[0], item.split("=")[1]);
}
String serverName = params.get("username").split("@")[1];
params.put("username", params.get("username").split("@")[0]);
MailAgent mailAgent = new MailAgent("smtp." + serverName);
state = mailAgent.login(params.get("username"), params.get("password"));
if (!state) {
System.out.println("[mailAgentService]服务中账号密码登陆失败!");
reportError();
return;
}
if (!params.containsKey("type")) {
reportError();
return;
}
if (params.get("type").equals("send")) {
state = mailAgent.sendMail(params);
if (state) {
String result = "HTTP/1.1 200 ok \n" +
"Content-Type: text/html \n" +
"Access-Control-Allow-Origin: *\n";
try {
this.out.write(result.getBytes());
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} else if (params.get("type").equals("query")) {
//todo:这里是查询邮件的业务逻辑
String mailJson = mailAgent.queryMail(params);
String result = "HTTP/1.1 200 ok \n" +
"Content-Type: application/json;charset=UTF-8 \n" +
"Access-Control-Allow-Origin: *\n" +
"\n" + mailJson;
try {
out.write(result.getBytes());
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}else if (params.get("type").equals("delete")){
JSONObject json = new JSONObject();
state = mailAgent.deleteMail(params);
json.put("deleteState",state);
String result = "HTTP/1.1 200 ok \n" +
"Content-Type: application/json;charset=UTF-8 \n" +
"Access-Control-Allow-Origin: *\n" +
"\n" + json.toString();
try {
out.write(result.getBytes());
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void reportError() {
String result = "HTTP/1.1 400 ok \n" +
"Content-Type: text/html \n" +
"Access-Control-Allow-Origin: *\n";
try {
this.out.write(result.getBytes());
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
资源下载地址:https://download.csdn.net/download/sheziqiong/86790177
资源下载地址:https://download.csdn.net/download/sheziqiong/86790177
本文含有隐藏内容,请 开通VIP 后查看