EmailVerify LogoEmailVerify

Mailchimp

Email checker for Mailchimp. Clean your email list before sending campaigns.

通過使用 EmailVerify 驗證訂閱者電子郵件,保持您的 Mailchimp 清單乾淨、改善可送達性並降低成本。

為什麼驗證 Mailchimp 清單?

問題影響解決方案
無效電子郵件高退信率在發送前驗證
一次性電子郵件低參與度在註冊期間篩選
陳舊清單受損聲譽定期清理
垃圾郵件陷阱黑名單風險識別有風險的地址

整合方法

方法使用案例自動化
API 整合即時驗證完全
Zapier無需編碼的自動化完全
匯出/匯入批量清單清理手動
Webhook新訂閱者驗證完全

方法 1:Zapier 整合(推薦)

最簡單的自動驗證 Mailchimp 訂閱者的方式。

新訂閱者驗證

觸發器:Mailchimp → 新訂閱者

動作:EmailVerify → 驗證電子郵件

篩選:根據驗證結果

動作:Mailchimp → 更新訂閱者 / 取消訂閱

設定步驟:

  1. 在 Zapier 中建立新 Zap
  2. 觸發器:Mailchimp - 新訂閱者
  3. 動作:Webhooks - POST 到 https://api.emailverify.ai/v1/verify
  4. 篩選:僅當 status = "valid" 時繼續
  5. 動作:Mailchimp - 使用標籤更新訂閱者

設定:

Webhook 設定:
  URL:https://api.emailverify.ai/v1/verify
  方法:POST
  Headers:
    Authorization:Bearer YOUR_API_KEY
    Content-Type:application/json
  Body:{"email": "{{email}}"}

按品質為訂閱者標籤

根據驗證結果新增標籤:

若 status = "valid" AND disposable = false
  → 新增標籤:「已驗證」

若 disposable = true
  → 新增標籤:「一次性」
  → 更新:行銷權限 = false

若 status = "invalid"
  → 取消訂閱成員
  → 新增標籤:「無效電子郵件」

方法 2:直接 API 整合

對於自訂應用,直接與兩個 API 整合。

Node.js 範例

const mailchimp = require('@mailchimp/mailchimp_marketing');
const { EmailVerify } = require('@emailverify/node');

// 初始化客戶端
mailchimp.setConfig({
  apiKey: process.env.MAILCHIMP_API_KEY,
  server: 'us1', // 您的伺服器前綴
});

const emailVerify = new EmailVerify({
  apiKey: process.env.EMAILVERIFY_API_KEY,
});

// 驗證訂閱者
async function verifySubscriber(listId, email) {
  // 取得驗證結果
  const result = await emailVerify.verify(email);

  // 取得訂閱者雜湊(小寫電子郵件的 MD5)
  const subscriberHash = crypto
    .createHash('md5')
    .update(email.toLowerCase())
    .digest('hex');

  // 根據結果更新訂閱者
  if (result.status === 'invalid') {
    // 取消訂閱無效電子郵件
    await mailchimp.lists.updateListMember(listId, subscriberHash, {
      status: 'unsubscribed',
    });

    // 新增標籤
    await mailchimp.lists.updateListMemberTags(listId, subscriberHash, {
      tags: [{ name: 'invalid_email', status: 'active' }],
    });
  } else if (result.status === 'valid') {
    // 標籤為已驗證
    const tags = [{ name: 'verified', status: 'active' }];

    if (result.result.disposable) {
      tags.push({ name: 'disposable', status: 'active' });
    }

    await mailchimp.lists.updateListMemberTags(listId, subscriberHash, { tags });
  }

  return result;
}

Python 範例

import mailchimp_marketing as mailchimp
from emailverify import Client as EmailVerify
import hashlib
import os

# 初始化客戶端
mailchimp_client = mailchimp.Client()
mailchimp_client.set_config({
    "api_key": os.environ["MAILCHIMP_API_KEY"],
    "server": "us1"
})

bv_client = EmailVerify(api_key=os.environ["EMAILVERIFY_API_KEY"])

def verify_subscriber(list_id: str, email: str):
    # 驗證電子郵件
    result = bv_client.verify(email)

    # 取得訂閱者雜湊
    subscriber_hash = hashlib.md5(email.lower().encode()).hexdigest()

    if result.status == "invalid":
        # 取消訂閱無效電子郵件
        mailchimp_client.lists.update_list_member(
            list_id,
            subscriber_hash,
            {"status": "unsubscribed"}
        )

        # 新增標籤
        mailchimp_client.lists.update_list_member_tags(
            list_id,
            subscriber_hash,
            {"tags": [{"name": "invalid_email", "status": "active"}]}
        )

    elif result.status == "valid":
        tags = [{"name": "verified", "status": "active"}]

        if result.result.disposable:
            tags.append({"name": "disposable", "status": "active"})

        mailchimp_client.lists.update_list_member_tags(
            list_id,
            subscriber_hash,
            {"tags": tags}
        )

    return result


# 批量驗證整個清單
def clean_list(list_id: str):
    # 取得所有訂閱者
    members = mailchimp_client.lists.get_list_members_info(
        list_id,
        count=1000,
        status="subscribed"
    )

    results = {"valid": 0, "invalid": 0, "unknown": 0}

    for member in members["members"]:
        result = verify_subscriber(list_id, member["email_address"])
        results[result.status] = results.get(result.status, 0) + 1

    return results

方法 3:批量清單清理

對於大型清單,匯出並使用 EmailVerify 的批量驗證。

步驟 1:從 Mailchimp 匯出

  1. 進入 AudienceAll contacts
  2. 點擊 Export Audience
  3. 下載 CSV 檔案

步驟 2:使用 EmailVerify 驗證

使用儀表板:

  1. 登入 EmailVerify
  2. 進入 Bulk Verification
  3. 上傳您的 CSV 檔案
  4. 等待處理
  5. 下載結果

使用 API:

const fs = require('fs');
const { EmailVerify } = require('@emailverify/node');

const client = new EmailVerify({
  apiKey: process.env.EMAILVERIFY_API_KEY,
});

async function cleanMailchimpExport(csvPath) {
  // 讀取 CSV 並提取電子郵件
  const csv = fs.readFileSync(csvPath, 'utf-8');
  const lines = csv.split('\n');
  const emails = lines
    .slice(1) // 跳過標題
    .map((line) => line.split(',')[0]) // 第一欄是電子郵件
    .filter((email) => email);

  // 提交批量工作
  const job = await client.verifyBulk(emails);
  console.log(`Job ID: ${job.job_id}`);

  // 等待完成(輪詢或使用 webhook)
  let status;
  do {
    await new Promise((r) => setTimeout(r, 10000)); // 等待 10 秒
    status = await client.getBulkJobStatus(job.job_id);
    console.log(`Progress: ${status.progress_percent}%`);
  } while (status.status !== 'completed');

  // 取得結果
  const results = await client.getBulkJobResults(job.job_id);

  // 按狀態分隔
  const valid = results.results.filter((r) => r.status === 'valid');
  const invalid = results.results.filter((r) => r.status === 'invalid');

  console.log(`Valid: ${valid.length}, Invalid: ${invalid.length}`);

  return { valid, invalid };
}

步驟 3:匯入結果回復

為 Mailchimp 匯入建立 CSV:

function createMailchimpImportCSV(verificationResults) {
  const header = 'Email Address,Tags\n';

  const validRows = verificationResults.valid
    .map((r) => {
      const tags = ['verified'];
      if (r.result.disposable) tags.push('disposable');
      return `${r.email},"${tags.join(',')}"`;
    })
    .join('\n');

  const invalidRows = verificationResults.invalid
    .map((r) => `${r.email},"invalid_email,unsubscribe"`)
    .join('\n');

  return header + validRows + '\n' + invalidRows;
}

匯入步驟:

  1. 進入 AudienceImport contacts
  2. 上傳 CSV
  3. 對應欄位:Email Address 和 Tags
  4. 選擇 Update existing contacts
  5. 完成匯入

Webhook 整合

驗證完成時接收通知:

在 EmailVerify 中設定 Webhook

// 建立 webhook
const webhook = await client.webhooks.create({
  url: 'https://your-server.com/api/emailverify-webhook',
  events: ['verification.completed'],
  secret: 'your-webhook-secret',
});

處理 Webhook

// Express.js 端點
app.post('/api/emailverify-webhook', express.json(), async (req, res) => {
  const { event, data } = req.body;

  if (event === 'verification.completed') {
    const { email, status, result } = data;

    // 更新 Mailchimp 訂閱者
    await updateMailchimpSubscriber(email, status, result);
  }

  res.status(200).send('OK');
});

async function updateMailchimpSubscriber(email, status, result) {
  const subscriberHash = crypto
    .createHash('md5')
    .update(email.toLowerCase())
    .digest('hex');

  const tags = [];

  if (status === 'valid') {
    tags.push({ name: 'verified', status: 'active' });
  } else if (status === 'invalid') {
    tags.push({ name: 'invalid_email', status: 'active' });
  }

  if (result.disposable) {
    tags.push({ name: 'disposable', status: 'active' });
  }

  await mailchimp.lists.updateListMemberTags(
    process.env.MAILCHIMP_LIST_ID,
    subscriberHash,
    { tags }
  );
}

最佳實務

1. 在新增前驗證

在新增到 Mailchimp 前驗證電子郵件:

async function addSubscriber(listId, email, firstName, lastName) {
  // 首先驗證
  const verification = await emailVerify.verify(email);

  if (verification.status === 'invalid') {
    throw new Error('Invalid email address');
  }

  if (verification.result.disposable) {
    throw new Error('Disposable emails not allowed');
  }

  // 新增到 Mailchimp
  await mailchimp.lists.addListMember(listId, {
    email_address: email,
    status: 'subscribed',
    merge_fields: {
      FNAME: firstName,
      LNAME: lastName,
    },
    tags: ['verified'],
  });
}

2. 定期清理清單

排程每月清單清理:

// Cron 工作範例(每月)
const cron = require('node-cron');

cron.schedule('0 0 1 * *', async () => {
  console.log('Starting monthly list cleaning...');

  const lists = await mailchimp.lists.getAllLists();

  for (const list of lists.lists) {
    await cleanList(list.id);
  }

  console.log('List cleaning complete');
});

3. 按電子郵件品質分段

為目標建立區隔:

高品質區隔:

{
  "name": "High Quality Subscribers",
  "conditions": {
    "match": "all",
    "conditions": [
      {
        "field": "tag",
        "op": "contains",
        "value": "verified"
      },
      {
        "field": "tag",
        "op": "notcontain",
        "value": "disposable"
      }
    ]
  }
}

4. 有效使用標籤

實施標籤策略:

標籤意義動作
verified電子郵件有效包含在行銷活動中
disposable臨時電子郵件限制發送
invalid_email電子郵件退信從行銷活動中排除
role_basedinfo@、support@考慮排除
needs_reverify上次驗證 >90 天重新驗證

5. 監視指標

實施後追蹤這些指標:

  • 退信率:應明顯下降
  • 開啟率:應改善
  • 可送達性分數:應增加
  • 清單成長品質:追蹤已驗證與未驗證的註冊

成本節省計算機

估計清單清理的節省:

指標清理前清理後
清單大小100,00085,000
無效電子郵件15%少於 1%
退信率8%少於 2%
每月 ESP 成本$250$212
年度節省-$456

較小、乾淨的清單通常有更高的參與率,改善您的寄件人信譽和可送達性。

故障排除

清理後退信率高

  • 驗證清理過程成功完成
  • 檢查最近新增的未驗證訂閱者
  • 重新驗證顯示為有效但正在退信的電子郵件

標籤未套用

  • 驗證 API 權限包括標籤管理
  • 檢查訂閱者狀態(已封存的成員無法標籤)
  • 確保標籤名稱不超過字元限制

速率限制

Mailchimp 和 EmailVerify 都有速率限制:

服務限制
Mailchimp Marketing API每秒 10 個請求
EmailVerify基於方案

為批量作業實施延遲:

async function processWithDelay(items, processFn, delayMs = 100) {
  for (const item of items) {
    await processFn(item);
    await new Promise((r) => setTimeout(r, delayMs));
  }
}

相關資源

On this page