HUNAN UNIVERSITY 工 程 训 练 报 告 题 目 : 基 于 POP3 和 SMTP 的 邮 件 服 务 端 和 移 动 客 户 端 学 生 姓 名 : 马 熠 东 学 生 学 号 :20112601307 专 业 班 级 : 软 件 三 班 指 导 老 师 ( 签 名 ): 2014 年 9 月 14 日
湖 南 大 学 工 程 训 练 第 1 页 目 录 1 引 言... 4 2 项 目 概 述... 4 2.1 项 目 简 介... 4 2.2 项 目 任 务... 4 2.2.1 项 目 名 称... 4 2.2.2 项 目 内 容... 5 2.2.3 项 目 周 期... 5 2.2.4 参 与 人 数... 5 2.3 实 验 环 境 介 绍... 5 A) PHP 编 程 语 言... 5 B) 移 动 端 APP 开 发 环 境... 5 C) MySQL... 5 3 项 目 设 计... 6 3.1 协 议 介 绍... 6 3.1.1 POP3... 6 3.1.2 SMTP... 6 3.2 系 统 组 成... 7 3.2.1 服 务 器 总 体 设 计... 7 3.2.2 系 统 模 块 设 计... 7 3.2.3 系 统 数 据 流 图... 9 3.3 客 户 端... 10 3.3.1 用 户 登 录 注 册... 10 3.3.2 邮 件 发 送 接 收 ( 写 邮 件, 收 件 箱, 发 件 箱 )... 10 3.3.3 通 讯 录... 11 3.3.4 密 码 管 理... 11 3.4 服 务 端... 11
3.4.1 服 务 的 起 停... 11 3.4.2 收 / 发 邮 件... 11 3.4.3 用 户 注 册... 12 3.4.4 修 改 用 户 密 码... 12 3.4.5 查 看 未 读 邮 件... 12 3.4.6 管 理 好 友 通 讯 录... 12 3.4.7 用 户 管 理... 12 3.4.8 服 务 器 设 置... 12 3.4.7 邮 件 群 发... 12 3.4.8 界 面 介 绍... 13 3.5 数 据 库... 14 3.5.1 物 理 模 型 图... 14 3.5.2 USER 表... 15 3.5.3 INBOX 表... 15 3.5.4 DIARY 表... 16 3.5.5 FRIEND 表... 16 4.1 个 人 任 务 :... 错 误! 未 定 义 书 签 4.2 任 务 难 点 :... 错 误! 未 定 义 书 签 4.3 个 人 感 想... 错 误! 未 定 义 书 签 5 参 考 文 献... 17
1 引 言 电 子 邮 件 作 为 人 们 沟 通 交 流 的 主 要 工 具, 在 网 络 中 有 着 广 泛 的 应 用 邮 件 系 统 的 架 构 可 分 为 邮 件 传 输 代 理 MTA 邮 件 投 递 代 理 MDA 和 邮 件 用 户 代 理 MUA 邮 件 用 户 代 理 是 一 个 发 信 和 收 信 的 程 序, 负 责 将 电 子 邮 件 发 送 到 SMTP 服 务 器 或 者 从 邮 件 服 务 器 取 回 收 到 的 邮 件 常 用 的 邮 件 用 户 代 理 有 微 软 的 OUTLOOK 腾 讯 的 FOXMAIL 等, 其 可 以 从 遵 循 POP3 协 议 的 邮 件 服 务 器 中 收 取 邮 件 UDP TCP/IP 等 相 关 网 络 协 议, 以 及 应 用 程 序 网 络 协 议 的 设 计 本 设 计 以 计 算 机 网 络 课 程 为 背 景, 帮 助 学 生 熟 悉 邮 件 服 务 器 服 务 端 和 客 户 端 设 计 原 理, 掌 握 SOCKET 网 络 编 程 以 及 应 用 层 网 络 协 议 的 设 计 方 法, 训 练 PHP 和 Android 移 动 操 作 系 统 APK 的 开 发 能 力 本 说 明 书 旨 在 介 绍 基 于 POP3 的 邮 件 服 务 端 和 移 动 客 户 端 ( 安 卓 系 统 ) 的 设 计 需 求, 设 计 方 法 和 环 境 介 绍 2 项 目 概 述 2.1 项 目 简 介 项 目 是 基 于 POP3 和 SMTP 的 邮 件 服 务 端 和 移 动 客 户 端 ( 安 卓 系 统 ) 的 设 计, 设 计 一 个 邮 件 服 务 器 和 一 个 移 动 端 ( 安 卓 系 统 ) 的 邮 件 客 户 端, 服 务 器 端 除 了 提 供 最 基 本 的 收 发 邮 件 功 能 之 外, 还 应 具 有 注 册 新 用 户 管 理 用 户 群 发 邮 件 以 及 修 改 服 务 器 相 关 参 数 修 改 管 理 员 密 码 邮 件 和 IP 地 址 过 滤 等 功 能 客 户 端 分 为 普 通 用 户 端 和 管 理 员 端 普 通 用 户 端 可 实 现 基 本 的 注 册 收 发 邮 件, 修 改 个 人 资 料 等 功 能 ; 管 理 员 端 主 要 实 现 群 发 邮 件 功 能, 除 此 之 外, 它 还 可 以 实 现 浏 览 用 户 信 息 以 及 删 除 用 户 等 操 作 2.2 项 目 任 务 2.2.1 项 目 名 称 基 于 SMTP 和 POP3 协 议 的 邮 件 服 务 端 和 移 动 客 户 端 设 计
2.2.2 项 目 内 容 1) 基 于 SMTP 的 邮 件 发 送 服 务 器 设 计 与 实 现 ; 2) 基 于 POP3 的 邮 件 接 收 服 务 器 设 计 与 实 现 ; 3) 移 动 Android 客 户 端 平 台 设 计 与 实 现 2.2.3 项 目 周 期 1 个 月 (2014 年 8 月 23 日 2014 年 9 月 23 日 ) 2.2.4 参 与 人 数 5 人 2.3 实 验 环 境 介 绍 A) PHP 编 程 语 言 PHP( PHP:Hypertext Preprocessor) 是 一 种 在 电 脑 上 执 行 的 脚 本 语 言, 主 要 用 途 是 在 于 处 理 动 态 网 页, 也 包 含 了 命 令 行 执 行 接 口 (command line interface), 或 者 产 生 图 形 用 户 界 面 (GUI) 程 式 B) 移 动 端 APP 开 发 环 境 MyEclipse 是 一 个 十 分 优 秀 的 用 于 开 发 Java, J2EE 的 Eclipse 插 件 集 合, MyEclipse 的 非 常 丰 富, 支 持 也 十 分 广 泛, 尤 其 是 对 各 种 开 源 产 品 的 支 持 MyEclipse 目 前 支 持 Java Servlet,AJAX, JSP, JSF, Struts,Spring, Hibernate,EJB3,JDBC 数 据 库 链 接 工 具 等 多 项 功 能 可 以 说 MyEclipse 是 几 乎 囊 括 了 目 前 所 有 主 流 开 源 产 品 的 专 属 eclipse 开 发 工 具 Qt 是 一 个 1991 年 由 奇 趣 科 技 开 发 的 跨 平 台 C++ 图 形 用 户 界 面 应 用 程 序 开 发 框 架 它 既 可 以 开 发 GUI 程 序, 也 可 用 于 开 发 非 GUI 程 序, 比 如 控 制 台 工 具 和 服 务 器 C) MySQL 是 一 个 关 系 型 数 据 库 管 理 系 统, 由 瑞 典 MySQL AB 公 司 开 发, 目 前 属 于 Oracle 公 司 Mysql 是 最 流 行 的 关 系 型 数 据 库 管 理 系 统, 在 WEB 应 用 方 面
MySQL 是 最 好 的 RDBMS(Relational Database Management System: 关 系 数 据 库 管 理 系 统 ) 应 用 软 件 之 一 MySQL 是 一 种 关 联 数 据 库 管 理 系 统, 关 联 数 据 库 将 数 据 保 存 在 不 同 的 表 中, 而 不 是 将 所 有 数 据 放 在 一 个 大 仓 库 内, 这 样 就 增 加 了 速 度 并 提 高 了 灵 活 性 MySQL 所 使 用 的 SQL 语 言 是 用 于 访 问 数 据 库 的 最 常 用 标 准 化 语 言 搭 配 PHP 和 Apache 可 组 成 良 好 的 开 发 环 境 3 项 目 设 计 3.1 协 议 介 绍 3.1.1 POP3 POP(Post Office Protocol) 邮 局 通 讯 协 议 POP 是 互 联 网 上 的 一 种 通 讯 协 议, 主 要 功 能 是 用 在 传 送 电 子 邮 件, 当 我 们 寄 信 给 另 外 一 个 人 时, 对 方 当 时 多 半 不 会 在 线 上, 所 以 邮 件 服 务 器 必 须 为 收 信 者 保 存 这 封 信, 直 到 收 信 者 来 检 查 这 封 信 件 当 收 信 人 收 信 的 时 候, 可 以 通 过 POP 通 讯 协 议 取 得 邮 件 目 前 主 要 是 采 用 POP3 协 议 3.1.2 SMTP SMTP(Simple Mail Transfer Protocol) 简 易 邮 件 传 输 通 讯 协 议 SMTP 是 互 联 网 上 的 一 种 通 讯 协 议, 主 要 功 能 是 用 在 邮 件 服 务 器 之 间 传 送 电 子 邮 件
3.2 系 统 组 成 3.2.1 服 务 器 总 体 设 计 用 户 信 息 存 储 单 元 用 户 认 证 模 块 客 户 端 SMTP 邮 件 服 务 器 外 部 邮 件 服 务 器 POP3 邮 件 存 储 单 元 邮 件 收 发 服 务 器 在 linux 系 统 上 使 用 PHP 语 言 中 的 邮 件 服 务 模 块 开 发, 邮 件 存 储 单 元 使 用 MYSQL 数 据 库 开 发 移 动 端 Android 客 户 端 模 块 使 用 myeclips 的 Android SDK 开 发 邮 件 收 发 系 统 根 据 功 能 划 分, 可 分 为 三 个 子 系 统 : 服 务 器 管 理 模 块 : a) 服 务 器 参 数 设 置 ; b) Admin 对 User 的 创 建 授 权 和 消 权 c) Admin 和 User 对 邮 箱 账 号 的 创 建 修 改 管 理 及 群 发 邮 件 邮 件 传 输 模 块 : a) 完 成 客 户 端 与 服 务 器 服 务 器 与 服 务 器 之 间 的 收 发 信 操 作 b) 使 用 SMTP( 发 信 ) POP3( 收 信 ) 移 动 端 Android 客 户 端 模 块 : a) 邮 件 的 发 送 接 收 和 删 除 b) 用 户 的 基 本 信 息 管 理 3.2.2 系 统 模 块 设 计 1) 服 务 器 端 :
邮 箱 管 理 主 要 是 设 置 邮 箱 的 大 小 客 户 的 管 理 主 要 实 现 在 服 务 器 端 创 建 新 的 客 户 账 号 和 密 码, 还 包 括 对 创 建 的 新 用 户 的 权 限 的 设 置 ( 既 是 否 具 有 管 理 员 的 职 能 ), 是 否 对 该 用 户 禁 用 等, 还 实 现 删 除 客 户 账 号 等 功 能 服 务 的 起 停 包 括 对 SMTP 服 务 POP3 服 务 的 起 停, 这 是 可 选 择 的 起 停, 通 过 它 可 以 对 客 户 端 有 选 择 的 进 行 服 务, 包 括 对 服 务 器 的 起 停 系 统 设 置 包 括 设 置 服 务 器 中 SMTP 端 口 ( 默 认 25) POP3 端 口 ( 默 认 110) 服 务 器 的 域 名 设 置 ( 默 认 test.com), 管 理 员 还 可 在 这 重 新 设 置 密 码 还 有 对 邮 件 的 过 滤, 可 实 现 账 号 的 过 滤 和 IP 地 址 的 过 滤 日 志 管 理 对 服 务 器 SMTP 日 志 POP3 日 志 的 查 看 和 清 除, 及 日 志 文 件 的 存 储 位 置 日 志 文 件 的 大 小 的 管 理 等 日 常 管 理 主 要 是 邮 件 的 群 发 功 能, 可 方 便 发 送 通 知 帮 助 对 管 理 员 提 供 服 务 器 的 使 用 帮 助 客 户 端 : 主 要 由 JAVA MAIL 实 现 邮 件 的 收 发 邮 件 的 操 作 邮 件 的 发 送 接 收 和 删 除 用 户 管 理 用 户 可 以 在 此 修 改 自 己 邮 箱 的 账 户 密 码, 还 提 供 新 用 户 的 注 册 功 能 管 理 员 管 理 在 客 户 端 可 以 提 供 管 理 员 远 程 登 陆 对 服 务 器 进 行 管 理 管 理 功 能 同 服 务
器 端 的 对 客 户 账 号 的 创 建 删 除 授 权 消 权 禁 用 等 3.2.3 系 统 数 据 流 图 1) 用 户 认 证 流 程 2)POP3 传 送 流 程 与 用 户 认 证 流 程 1 用 户 认 证 流 程 :
2 POP3 传 送 流 程 3.3 客 户 端 3.3.1 用 户 登 录 注 册 在 Android 移 动 客 户 端 上, 用 户 可 以 登 录 或 注 册 新 用 户, 登 录 成 功 后, 客 户 端 会 自 动 保 存 上 次 成 功 登 录 的 用 户 账 户 名 和 密 码, 填 写 在 登 录 界 面 上 3.3.2 邮 件 发 送 接 收 ( 写 邮 件, 收 件 箱, 发 件 箱 ) 用 户 在 客 户 端 上 可 以 填 写 或 者 选 择 通 讯 录 里 的 联 系 人, 编 辑 文 本 邮 件 内 容, 并 可 以 添 加 图 片 附 件, 发 送 至 服 务 器 ( 发 送 邮 件 支 持 群 发 功 能 )
在 用 户 登 录 后 的 主 界 面 上, 用 户 可 以 进 入 收 件 箱, 查 看 自 己 的 邮 件 客 户 端 每 隔 一 段 时 间 会 自 动 检 查 是 否 有 新 邮 件 到 达, 如 果 有, 则 在 通 知 栏 内 推 送 新 邮 件 消 息 用 户 可 以 在 主 界 面 查 看 自 己 的 发 件 箱, 查 看 自 己 已 经 发 送 的 邮 件 3.3.3 通 讯 录 在 编 辑 邮 件 的 模 块 里, 用 户 便 可 以 直 接 选 择 通 讯 录 里 的 联 系 人 在 用 户 登 录 后 的 主 界 面 上, 进 入 通 讯 录 模 块, 可 以 查 看 用 户 自 己 的 联 系 人, 并 可 以 批 量 管 理 联 系 人, 添 加 或 者 删 除 3.3.4 密 码 管 理 在 用 户 登 录 后 的 主 界 面 上, 进 入 密 码 管 理 模 块, 用 户 可 以 修 改 自 己 的 密 码. 3.4 服 务 端 3.4.1 服 务 的 起 停 管 理 员 可 以 在 服 务 器 的 控 制 面 板, 如 下 图 : 开 启 SMTP 协 议 和 POP3 协 议 来 启 动 服 务 器 使 用 ; 关 闭 SMTP 协 议 和 POP3 协 议 来 停 止 服 务 器 的 使 用 ; 3.4.2 收 / 发 邮 件 服 务 器 开 启 之 后, 使 用 SMTP 协 议 的 服 务 器 可 以 接 受 手 机 客 户 端 发 送 的 邮 件 内 容, 并 且 根 据 SMTP 协 议 获 取 邮 件 的 发 送 人, 接 收 人 主 题 内 容 等 保 存 到 数 据 库 由 于 我 们 只 是 在 局 域 网 内 使 用 该 邮 件 收 发 系 统, 所 以 SMTP 协 议 的 服 务 器 只 能 实 现 存 储 到 本 地 的 功 能, 并 不 能 实 现 转 发 到 qq 邮 箱 新 浪 邮 箱 的 知 名 度 广 泛 的 邮 箱,
使 用 POP3 协 议 的 服 务 器 可 以 在 用 户 上 线 之 后, 根 据 用 户 发 送 的 命 令, 作 出 响 应 的 响 应, 比 如 提 醒 用 户 邮 件 总 数, 列 出 所 有 邮 件 详 细 信 息 等 功 能 ; 3.4.3 用 户 注 册 用 户 发 送 register 命 令, 发 送 用 户 名 和 密 码 通 过 3333 端 口, 和 服 务 器 交 互, 将 数 据 存 到 数 据 库, 实 现 注 册 功 能 ; 3.4.4 修 改 用 户 密 码 用 户 发 送 config 命 令, 发 送 用 户 名 和 新 密 码 通 过 3333 端 口, 和 服 务 器 进 行 交 互, 将 新 数 据 更 新 到 数 据 库, 实 现 修 改 用 户 修 改 密 码 功 能 ; 3.4.5 查 看 未 读 邮 件 用 户 发 送 outbox 命 令, 发 送 需 要 查 看 未 读 邮 件 的 用 户 名 通 过 3333 端 口, 和 服 务 器 进 行 交 互, 服 务 器 将 该 用 户 标 志 为 未 读 的 邮 件 返 回 给 用 户 3.4.6 管 理 好 友 通 讯 录 用 户 可 发 送 响 应 的 命 令, 实 现 获 取 数 据 库 中 好 友 联 系 人 的 信 息 添 加 好 友 删 除 好 友 等 功 能 ; 3.4.7 用 户 管 理 针 对 用 户 管 理 模 块, 在 运 行 服 务 器 程 序 后, 在 用 户 管 理 面 板 可 以 对 用 户 进 行 管 理, 在 输 入 框 中 输 入 新 的 用 户 名 密 码, 并 对 权 限 进 行 设 置 后, 点 击 添 加 按 钮 可 添 加 用 户 3.4.8 服 务 器 设 置 用 户 可 以 实 现 修 改 服 务 器 通 信 端 口 号 查 看 当 前 通 信 IP 地 址 查 看 当 前 主 机 名 启 动 / 停 止 SMTP 协 议 服 务 器 启 动 / 停 止 POP3 协 议 服 务 器 等 功 能, 来 实 现 控 制 和 设 置 服 务 器 的 目 的 ; 3.4.7 邮 件 群 发 客 户 端 选 择 多 个 发 送 人 时, 服 务 器 可 以 做 出 相 应 的 操 作, 将 邮 件 内 容 保 存
到 数 据 库, 等 待 对 方 登 陆 后, 采 取 对 应 的 操 作, 例 如 list 提 醒 客 户 端 等 功 能 ; 3.4.8 界 面 介 绍 1) 控 制 面 板 2) 用 户 管 理
3) 日 志 管 理 4) 系 统 管 理 ( 尚 未 实 现 ) 3.5 数 据 库 3.5.1 物 理 模 型 图
3.5.2 USER 表 属 性 类 型 长 度 主 / 外 键 user_id int 11 主 键 name varchar 50 password varchar 25 author int 11 3.5.3 INBOX 表 属 性 类 型 长 度 主 / 外 键 mail_id int 11 主 键 From varchar 50 to varchar 50 subject varchar 100 content varchar 1024 date timestamp / MIME_Version varchar 20 content-type varchar 255 content-transfer-encoding varchar 20 senddate varchar 100 messageid varchar 255 flag int 11
3.5.4 DIARY 表 属 性 类 型 长 度 主 / 外 键 diary_id int 11 主 键 executor varchar 255 execution varchar 255 modify_time varchar 1024 modify_time varchar 255 3.5.5 FRIEND 表 属 性 类 型 长 度 主 / 外 键 me_id varchar 255 主 键 外 键 fr_id varchar 255 外 键 4.1 个 人 任 务 我 是 这 次 项 目 小 组 的 组 长, 主 要 负 责 该 邮 件 系 统 的 总 体 架 构, 以 及 Android 移 动 客 户 端 的 普 通 用 户 模 块 的 代 码 开 发 具 体 模 块 功 能, 上 述 文 档 中, 已 有 详 细 介 绍 4.2 任 务 难 点 虽 然 首 次 接 触 Android 项 目, 但 因 为 之 前 有 接 触 过 java 和 xml, 所 以 在 客 户 端 的 开 始 阶 段, 并 没 有 遇 到 太 多 环 境 配 置 以 及 编 程 基 础 方 面 的 问 题 Android 移 动 客 户 端 在 邮 件 收 发 功 能 方 面, 使 用 javamail 发 送 接 收, 并 采 用 smtp 和 pop3 协 议 由 于 这 两 个 协 议 在 功 能 上 仍 然 存 在 缺 陷, 所 以, 我 们 自 定 义 了 一 个 新 的 协 议, 通 过 socket 编 程 来 实 现 用 户 注 册, 通 讯 录 管 理, 发 件 箱 以 及 密 码 修 改 的 功 能 同 时 在 消 息 通 知 上, 由 于 要 定 时 检 查 服 务 器 内 是 否 有 新 邮 件, 所 以 客 户 端 开 通 一 项 轮 询 的 服 务, 来 推 送 新 邮 件 消 息 发 送 邮 件 方 面, 可 以 发 送 带 有 图 片 附 件 的 邮 件, 并 可 以 群 发
4.3 个 人 感 想 我 觉 得 能 有 一 次 这 样 的 小 学 期 课 程 设 计, 对 于 我 们 软 件 工 程 的 学 生 来 说, 是 锻 炼 自 己 编 程 能 力 和 实 践 动 手 能 力 的 好 机 会 拿 我 来 说, 从 来 没 有 做 过 Android 方 面 的 东 西, 但 通 过 这 一 次 的 项 目, 我 对 Android 有 了 很 深 的 理 解, 实 践 出 真 知, 我 们 不 应 该 只 局 限 于 课 本 上 的 知 识, 只 有 在 实 际 项 目 中, 才 能 加 深 我 们 对 于 理 论 的 认 知, 使 我 们 自 己 成 为 一 个 具 备 综 合 能 力 的 优 秀 的 本 科 生 5 参 考 文 献 [1] Matt Zandstra. 深 入 PHP: 面 向 对 象 模 式 与 实 践 : 第 3 版 [M]. 人 民 邮 电 出 版 社 [2] [ 美 ] 库 罗 斯. 计 算 机 网 络 : 自 顶 向 下 方 法 ( 原 书 第 4 版 )[M]. 机 械 工 业 出 版 社 [3] W.Richard Stevens. TCP/IP 详 解 卷 1- 卷 4[M]. 机 械 工 业 出 版 社 [4] W. Jason Gilmore. PHP 与 MySQL 程 序 设 计 [M]. 人 民 邮 电 出 版 社 [5] Armando Padilla, Tim Hawkins. 高 性 能 PHP 应 用 开 发 [M]. 人 民 邮 电 出 版 社 [6] 黄 隽 实. Android+PHP 最 佳 实 践 [M]. 人 民 邮 电 出 版 社 [7] Ian G. Clifton. Android 用 户 界 面 设 计 [M]. 电 子 工 业 出 版 社 [8] 软 件 开 发 标 准 : 国 家 标 准 (GB8567 88 ) 项 目 开 发 计 划 规 范 (GB856T 88) 软 件 需 求 说 明 书 规 范 (GB856T 88) 数 据 库 设 计 说 明 书 规 范 (GB8567 88) 数 据 要 求 说 明 书 规 范 (GB856T 88) 详 细 设 计 说 明 书 规 范 (GB8567 88) 用 户 手 册 规 范 (GB8567 88) 测 试 计 划 测 试 分 析 报 告 规 范 (GB8567 88)