基于JavaWeb的网页版邮箱系统设计与实现

发布于:2022-12-21 ⋅ 阅读:(406) ⋅ 点赞:(0)

资源下载地址:https://download.csdn.net/download/sheziqiong/86790177
资源下载地址:https://download.csdn.net/download/sheziqiong/86790177
目录
一、 项目选题 2
程序功能: 2
二、 开发环境和工具 2
三、 项目使用说明手册 2
四、 系统结构 2

  1. 项目目录结构 2
  2. 系统执行过程 3
    五、 系统内核心实现 4
  3. 模块动态加载 4
  4. 对webpage下的服务进行扫描 4
  5. 通过retr命令获取邮件,并且通过json格式返回到web前端 5
  6. 配置文件的读取 6
    六、 项目运行截图 7
  7. 首页 7
  8. 邮箱邮件查询 7
  9. 邮件发送 8
  10. 邮件详情 9
  11. 配置文件设置 9
  12. Web服务器错误页 10
  13. Web服务器主页 10
  14. 两个不同的邮箱进行测试 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 后查看