OpenCode
Email checker with OpenCode CLI. Verify emails in OpenCode AI assistant.
OpenCode 是一個開源的終端 AI 編程助手。了解如何在 OpenCode 工作流程中使用 EmailVerify 進行電郵驗證。
什麼是 OpenCode?
OpenCode 是一個社群驅動的開源 AI 編程助手,提供:
- 自然語言程式碼產生
- Shell 命令執行
- 程式碼審查和除錯
- 與本地和雲端 LLM 整合
設定
安裝 EmailVerify CLI
npm install -g @emailverify/cli
bv config set api-key YOUR_API_KEY配置環境
新增到您的 shell 配置:
export EMAILVERIFY_API_KEY=your-api-key使用 OpenCode
基礎驗證
您: 使用 bv 命令驗證 user@company.com 是否是有效電郵
OpenCode:
我會執行 EmailVerify CLI 檢查該電郵。
$ bv verify user@company.com
電郵: user@company.com
狀態: 有效
分數: 0.92
可投遞: 是
一次性: 否
角色: 否
該電郵有效且安全可用。產生驗證程式碼
您: 建立一個使用 EmailVerify 驗證電郵的 TypeScript 函式
OpenCode:
async function verifyEmail(email: string): Promise<VerificationResult> {
const response = await fetch('https://api.emailverify.ai/v1/verify', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.EMAILVERIFY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email }),
});
if (!response.ok) {
throw new Error(`驗證失敗: ${response.statusText}`);
}
return response.json();
}
interface VerificationResult {
email: string;
status: 'valid' | 'invalid' | 'unknown';
score: number;
result: {
deliverable: boolean;
disposable: boolean;
role: boolean;
};
}數據處理
您: 編寫一個腳本,透過驗證所有電郵來清理我的使用者數據庫
OpenCode:
#!/usr/bin/env python3
"""
透過驗證電郵地址來清理使用者數據庫。
將無效的電郵移到單獨的表格中供審核。
"""
import os
import requests
import sqlite3
from typing import List, Tuple
API_KEY = os.environ['EMAILVERIFY_API_KEY']
API_URL = 'https://api.emailverify.ai/v1/verify'
def verify_email(email: str) -> dict:
"""驗證單個電郵地址。"""
response = requests.post(
API_URL,
headers={
'Authorization': f'Bearer {API_KEY}',
'Content-Type': 'application/json',
},
json={'email': email}
)
return response.json()
def process_users(db_path: str) -> Tuple[int, int, int]:
"""處理所有使用者並按電郵有效性分類。"""
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 如果不存在則建立無效電郵表格
cursor.execute('''
CREATE TABLE IF NOT EXISTS invalid_emails (
user_id INTEGER,
email TEXT,
reason TEXT,
verified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
# 取得所有使用者
cursor.execute('SELECT id, email FROM users')
users = cursor.fetchall()
valid = 0
invalid = 0
unknown = 0
for user_id, email in users:
result = verify_email(email)
if result['status'] == 'valid':
valid += 1
elif result['status'] == 'invalid':
invalid += 1
cursor.execute(
'INSERT INTO invalid_emails (user_id, email, reason) VALUES (?, ?, ?)',
(user_id, email, 'invalid')
)
else:
unknown += 1
# 限流
import time
time.sleep(0.1)
conn.commit()
conn.close()
return valid, invalid, unknown
if __name__ == '__main__':
valid, invalid, unknown = process_users('users.db')
print(f'結果: {valid} 個有效, {invalid} 個無效, {unknown} 個未知')CI/CD 整合
您: 將電郵驗證新增到我的 GitHub Actions 工作流程
OpenCode:
# .github/workflows/verify-test-emails.yml
name: 驗證測試電郵
on:
pull_request:
paths:
- 'test/**'
- 'fixtures/**'
jobs:
verify-emails:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 設定 Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: 安裝 EmailVerify CLI
run: npm install -g @emailverify/cli
- name: 提取並驗證電郵
env:
EMAILVERIFY_API_KEY: ${{ secrets.EMAILVERIFY_API_KEY }}
run: |
# 在測試檔案中尋找所有電郵地址
emails=$(grep -rhoE '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}' test/ fixtures/ | sort -u)
echo "找到待驗證的電郵:"
echo "$emails"
# 驗證每個電郵
failed=0
for email in $emails; do
# 跳過 example.com 和測試域名
if [[ "$email" =~ @(example\.(com|org|net)|test\.com)$ ]]; then
echo "⏭️ 跳過測試域名: $email"
continue
fi
result=$(bv verify "$email" --json 2>/dev/null)
status=$(echo "$result" | jq -r '.status')
if [ "$status" = "valid" ]; then
echo "⚠️ 在測試中發現真實電郵: $email"
failed=1
fi
done
if [ $failed -eq 1 ]; then
echo "::error::在測試檔案中發現真實電郵地址!"
exit 1
fi
echo "✅ 測試檔案中沒有真實電郵"自動化配方
批次處理腳本
#!/bin/bash
# verify-list.sh - 驗證電郵清單並將結果輸出為 CSV
input_file="${1:-emails.txt}"
output_file="${2:-results.csv}"
echo "email,status,score,disposable,role" > "$output_file"
while IFS= read -r email; do
[ -z "$email" ] && continue
result=$(bv verify "$email" --json 2>/dev/null)
status=$(echo "$result" | jq -r '.status')
score=$(echo "$result" | jq -r '.score')
disposable=$(echo "$result" | jq -r '.result.disposable')
role=$(echo "$result" | jq -r '.result.role')
echo "$email,$status,$score,$disposable,$role" >> "$output_file"
# 進度指示器
echo -n "."
done < "$input_file"
echo ""
echo "結果已儲存到 $output_file"Webhook 處理器
// webhook-handler.js - 從 webhook 事件中驗證電郵
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhook/new-signup', async (req, res) => {
const { email, userId } = req.body;
// 驗證電郵
const verifyResponse = await fetch('https://api.emailverify.ai/v1/verify', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.EMAILVERIFY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email }),
});
const result = await verifyResponse.json();
if (result.status === 'invalid' || result.result.disposable) {
// 標記使用者供審核
console.log(`已標記使用者 ${userId}: ${email} - ${result.status}`);
// await flagUser(userId, 'suspicious_email');
}
res.json({ verified: true, result });
});
app.listen(3000);