You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel 10中通过cPanel UAPI正确创建邮箱并获取成功响应

在Laravel 10中调用cPanel UAPI创建邮箱的正确方式

你当前的代码存在几个关键错误,不符合cPanel UAPI的调用规范:

  • 请求URL未指向UAPI的/execute/Module/function核心路径
  • 未添加必填的Authorization身份验证请求头
  • 参数传递方式错误(UAPI不需要用parameter和value包裹,需直接传递函数要求的参数名,比如email、password)

正确的请求规则

根据cPanel UAPI规范,调用需满足:

  1. 身份验证头:添加Authorization头,格式为cpanel 用户名:API令牌(注意cpanel后有一个空格)
  2. 请求地址:https://你的cPanel服务器域名:2083/execute/Email/add_pop(Email是模块名,add_pop是创建邮箱的函数名)
  3. 参数传递:直接传入add_pop函数要求的参数,比如邮箱前缀、密码、配额等

Laravel 10中的正确实现代码

以下是两种可行的请求方式,附带响应处理逻辑:

方式1:GET请求(对应官方curl示例格式)

public function createEmail()
{
    $cpanelUser = 'holidays';
    $apiToken = 'XPA6V9NSZ5JGKXU5VE2X214U53WROFI0';
    $serverDomain = 'example.com';

    $response = Http::withHeaders([
        'Authorization' => "cpanel {$cpanelUser}:{$apiToken}"
    ])->get("https://{$serverDomain}:2083/execute/Email/add_pop", [
        'email' => 'test', // 邮箱前缀,最终生成test@你的主域名
        'password' => 'StrongPass123!', // 符合cPanel强度要求的密码
        'quota' => 100 // 邮箱配额(单位MB,0表示不限,可选参数)
    ]);

    // 处理响应并返回结果
    if ($response->successful()) {
        $result = $response->json();
        return response()->json([
            'status' => 'success',
            'message' => '邮箱创建成功',
            'email_info' => $result['data']
        ]);
    } else {
        $errorMsg = $response->json()['errors'][0]['message'] ?? '请求失败';
        return response()->json([
            'status' => 'error',
            'message' => $errorMsg
        ], $response->status());
    }
}

方式2:POST请求(UAPI支持表单参数提交)

public function createEmail()
{
    $cpanelUser = 'holidays';
    $apiToken = 'XPA6V9NSZ5JGKXU5VE2X214U53WROFI0';
    $serverDomain = 'example.com';

    $response = Http::withHeaders([
        'Authorization' => "cpanel {$cpanelUser}:{$apiToken}"
    ])->post("https://{$serverDomain}:2083/execute/Email/add_pop", [
        'email' => 'test',
        'password' => 'StrongPass123!',
        'domain' => 'sub.example.com', // 可选,指定非主域名创建邮箱
        'quota' => 50
    ]);

    // 响应处理逻辑与GET方式一致
    if ($response->successful()) {
        $result = $response->json();
        return response()->json([
            'status' => 'success',
            'message' => '邮箱创建成功',
            'email_info' => $result['data']
        ]);
    } else {
        $errorMsg = $response->json()['errors'][0]['message'] ?? '请求失败';
        return response()->json([
            'status' => 'error',
            'message' => $errorMsg
        ], $response->status());
    }
}

额外注意事项

  • 若需指定非主域名创建邮箱,添加domain参数即可,比如'domain' => 'sub.example.com'
  • 密码必须符合cPanel的强度规则(如长度、包含大小写字母/数字/特殊字符),否则会返回验证错误
  • UAPI响应为JSON格式,成功时status字段为1,失败时为0,错误信息存储在errors数组中

内容的提问来源于stack exchange,提问作者Morshedul Aziz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:15:24