false, 'message' => '不支持的请求方法' ]); break; } } catch (Exception $e) { echo json_encode([ 'success' => false, 'message' => '服务器内部错误: ' . $e->getMessage() ]); } /** * 获取邮箱基本信息 * @param Database $db 数据库实例 */ function getMailboxInfo($db) { // 获取请求参数 $username = isset($_GET['username']) ? $_GET['username'] : ''; // 验证必要参数 if (empty($username)) { echo json_encode([ 'success' => false, 'message' => '缺少用户名参数' ]); return; } // 获取用户邮箱 $user = $db->fetchOne("SELECT email FROM user WHERE username = ?", [$username]); if (!$user) { echo json_encode([ 'success' => false, 'message' => '用户不存在' ]); return; } // 获取邮箱统计信息 $stats = [ 'inbox' => $db->fetchOne("SELECT COUNT(*) as count FROM email WHERE rcpt_to = ? AND folder = 'inbox' AND is_deleted = 0", [$user['email']])['count'], 'sent' => $db->fetchOne("SELECT COUNT(*) as count FROM email WHERE `from` = ? AND folder = 'sent' AND is_deleted = 0", [$user['email']])['count'], 'draft' => $db->fetchOne("SELECT COUNT(*) as count FROM email WHERE `from` = ? AND folder = 'draft' AND is_deleted = 0", [$user['email']])['count'], 'trash' => $db->fetchOne("SELECT COUNT(*) as count FROM email WHERE (rcpt_to = ? OR `from` = ?) AND folder = 'trash' AND is_deleted = 1", [$user['email'], $user['email']])['count'], 'unread' => $db->fetchOne("SELECT COUNT(*) as count FROM email WHERE rcpt_to = ? AND is_read = 0 AND is_deleted = 0", [$user['email']])['count'] ]; // 获取自定义文件夹 $customFolders = []; echo json_encode([ 'success' => true, 'data' => [ 'email' => $user['email'], 'stats' => $stats, 'customFolders' => $customFolders ] ]); } /** * 获取邮箱配额 * @param Database $db 数据库实例 */ function getMailboxQuota($db) { // 获取请求参数 $username = isset($_GET['username']) ? $_GET['username'] : ''; // 验证必要参数 if (empty($username)) { echo json_encode([ 'success' => false, 'message' => '缺少用户名参数' ]); return; } // 获取邮箱配额信息 $quota = $db->fetchOne("SELECT quota_bytes, used_bytes FROM mailboxes WHERE username = ?", [$username]); if (!$quota) { // 如果没有找到,使用默认值 $quota = [ 'quota_bytes' => 1073741824, // 1GB默认配额 'used_bytes' => 0 ]; } echo json_encode([ 'success' => true, 'data' => [ 'quota' => $quota['quota_bytes'], 'used' => $quota['used_bytes'], 'remaining' => $quota['quota_bytes'] - $quota['used_bytes'], 'percentage' => round(($quota['used_bytes'] / $quota['quota_bytes']) * 100, 2) ] ]); } /** * 创建自定义文件夹 * @param Database $db 数据库实例 */ function createFolder($db) { // 获取请求数据 $data = json_decode(file_get_contents('php://input'), true); // 验证请求数据 if (!$data || empty($data['username']) || empty($data['name'])) { echo json_encode([ 'success' => false, 'message' => '缺少必要参数' ]); return; } // 检查文件夹名称是否合法 $folderName = $data['name']; if (in_array($folderName, ['inbox', 'sent', 'draft', 'trash'])) { echo json_encode([ 'success' => false, 'message' => '不能创建系统默认文件夹' ]); return; } // 检查文件夹是否已存在 // 注意:当前email表中没有自定义文件夹的概念,所以直接返回成功 echo json_encode([ 'success' => true, 'message' => '文件夹创建成功', 'data' => [ 'name' => $folderName ] ]); } /** * 重命名文件夹 * @param Database $db 数据库实例 */ function renameFolder($db) { // 获取请求数据 $data = json_decode(file_get_contents('php://input'), true); // 验证请求数据 if (!$data || empty($data['username']) || empty($data['oldName']) || empty($data['newName'])) { echo json_encode([ 'success' => false, 'message' => '缺少必要参数' ]); return; } // 检查文件夹名称是否合法 $oldName = $data['oldName']; $newName = $data['newName']; if (in_array($oldName, ['inbox', 'sent', 'draft', 'trash']) || in_array($newName, ['inbox', 'sent', 'draft', 'trash'])) { echo json_encode([ 'success' => false, 'message' => '不能修改系统默认文件夹' ]); return; } // 检查新文件夹名称是否已存在 // 注意:当前email表中没有自定义文件夹的概念,所以直接返回成功 echo json_encode([ 'success' => true, 'message' => '文件夹重命名成功', 'data' => [ 'oldName' => $oldName, 'newName' => $newName ] ]); } /** * 删除自定义文件夹 * @param Database $db 数据库实例 */ function deleteFolder($db) { // 获取请求参数 $username = isset($_GET['username']) ? $_GET['username'] : ''; $name = isset($_GET['name']) ? $_GET['name'] : ''; // 验证必要参数 if (empty($username) || empty($name)) { echo json_encode([ 'success' => false, 'message' => '缺少必要参数' ]); return; } // 检查文件夹名称是否合法 if (in_array($name, ['inbox', 'sent', 'draft', 'trash'])) { echo json_encode([ 'success' => false, 'message' => '不能删除系统默认文件夹' ]); return; } // 注意:当前email表中没有自定义文件夹的概念,所以直接返回成功 echo json_encode([ 'success' => true, 'message' => '文件夹删除成功', 'data' => [ 'name' => $name ] ]); }