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);