MENU

使用Cloudflare接口添加/删除邮箱规则

July 31, 2024 • 已被 425 位童鞋围观过 • 代码分享,新手笔记

添加邮箱转发的规则 代码如下

$apiToken = 'API令牌';
$zoneId = '区域ID';

$url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/email/routing/rules";

$data = [
    'name' => 'My Email Route',
    'enabled' => true,
    'matchers' => [
        [
            'type' => 'literal',
            'field' => 'to',
            'value' => '新建一个域名邮箱地址(被转发)'
        ]
    ],
    'actions' => [
        [
            'type' => 'forward',
            'value' => ['转发的地址(需要验证!)']
        ]
    ]
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer {$apiToken}",
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;

结果返回 会有一个 $ruleId 值 可以根据这个值删除此条邮箱处理规则

代码如下

<?php

$apiToken = 'YOUR_API_TOKEN';
$zoneId = 'YOUR_ZONE_ID';
$ruleId = 'RULE_ID_TO_DELETE';

$url = "https://api.cloudflare.com/client/v4/zones/{$zoneId}/email/routing/rules/{$ruleId}";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer {$apiToken}",
    "Content-Type: application/json"
]);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'Curl error: ' . curl_error($ch);
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo 'HTTP Code: ' . $httpCode . "\n";
echo 'Response: ' . $response . "\n";

您可以按照以下步骤创建一个具有所需权限的令牌:

  1. 登录 Cloudflare 仪表板。
  2. 转到 "我的个人资料" > "API 令牌"。
  3. 点击 "创建令牌"。
  4. 选择 "自定义 API 令牌"。
  5. 设置令牌名称,例如 "Email Routing API"。
  6. 在 "权限" 部分,添加以下权限:

    • Zone - Zone Settings - Read
    • Zone - Zone Settings - Edit
    • Zone - Email Routing Rules - Edit
  7. 在 "区域资源" 部分,选择您要管理电子邮件路由的特定区域(域名),或选择 "所有区域" 如果您想要管理多个域名。
  8. 设置一个合适的 "TTL"(生存时间),如果您希望令牌在一定时间后过期。
  9. 点击 "继续到摘要" 然后 "创建令牌"。
  10. 复制生成的令牌。这将是您在代码中使用的 YOUR_API_KEY

获取 Zone ID 的方法有几种。以下是最常用的方法:

  1. 通过 Cloudflare 仪表板获取:
    a. 登录到您的 Cloudflare 账户。
    b. 在主页面上,选择您想要管理的域名。
    c. 进入域名的概览页面后,向下滚动。
    d. 在右侧栏中,您应该能看到 "Zone ID" 字段。
  2. 使用 API 获取:
    如果您有多个域名,或者想通过编程方式获取 Zone ID,可以使用 Cloudflare API。以下是一个 PHP 示例:

    <?php
    
    $apiToken = 'YOUR_API_TOKEN';
    $domain = 'example.com'; // 替换为您的域名
    
    $url = "https://api.cloudflare.com/client/v4/zones?name={$domain}";
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer {$apiToken}",
        "Content-Type: application/json"
    ]);
    
    $response = curl_exec($ch);
    curl_close($ch);
    
    $data = json_decode($response, true);
    
    if ($data['success'] && !empty($data['result'])) {
        $zoneId = $data['result'][0]['id'];
        echo "Zone ID for {$domain}: {$zoneId}\n";
    } else {
        echo "Failed to retrieve Zone ID. Error: " . json_encode($data['errors']);
    }

    使用这段代码时,请确保:

    • 替换 YOUR_API_TOKEN 为您的实际 API 令牌。
    • example.com 替换为您想要查询的实际域名。