Codex
Email checker with OpenAI Codex CLI. Verify emails in Codex automation.
OpenAI Codex CLI 提供 AI 驱动的代码生成和终端辅助。了解如何集成 EmailVerify 进行邮箱验证任务。
什么是 Codex CLI?
Codex CLI 是 OpenAI 的命令行工具,利用 Codex 模型提供:
- 自然语言到代码的转换
- Shell 命令生成
- 代码补全和调试
- 任务自动化
设置
安装 EmailVerify CLI
npm install -g @emailverify/cli
bv config set api-key 您的_API_密钥配置环境
export EMAILVERIFY_API_KEY=您的-api-密钥
export OPENAI_API_KEY=您的-openai-密钥使用示例
生成验证脚本
提示: 编写一个 Python 脚本,使用 EmailVerify API 验证邮箱列表
Codex 输出:
import os
import requests
from typing import List, Dict
def verify_emails(emails: List[str]) -> List[Dict]:
"""使用 EmailVerify API 验证邮箱地址列表。"""
api_key = os.environ.get('EMAILVERIFY_API_KEY')
results = []
for email in emails:
response = requests.post(
'https://api.emailverify.ai/v1/verify',
headers={
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json',
},
json={'email': email}
)
results.append(response.json())
return results
def main():
emails = [
'test@example.com',
'user@gmail.com',
'fake@mailinator.com',
]
results = verify_emails(emails)
for result in results:
status = '✅' if result['status'] == 'valid' else '❌'
print(f"{status} {result['email']}: {result['status']}")
if __name__ == '__main__':
main()生成 Shell 命令
提示: 验证 CSV 文件第二列中所有邮箱的单行命令
Codex 输出:
cut -d',' -f2 users.csv | tail -n +2 | while read email; do bv verify "$email" --quiet && echo "✅ $email" || echo "❌ $email"; done生成测试用例
提示: 为邮箱验证函数生成 Jest 测试
Codex 输出:
import { verifyEmail } from './email-service';
describe('邮箱验证', () => {
beforeAll(() => {
process.env.EMAILVERIFY_API_KEY = 'test-api-key';
});
test('验证正确的邮箱格式', async () => {
const result = await verifyEmail('user@example.com');
expect(result).toHaveProperty('status');
expect(result).toHaveProperty('score');
});
test('拒绝无效的邮箱格式', async () => {
const result = await verifyEmail('not-an-email');
expect(result.status).toBe('invalid');
});
test('检测临时邮箱', async () => {
const result = await verifyEmail('test@mailinator.com');
expect(result.result.disposable).toBe(true);
});
test('妥善处理 API 错误', async () => {
// 模拟网络错误
const result = await verifyEmail('test@example.com');
expect(result).not.toBeNull();
});
});生成 API 集成
提示: 创建带缓存的 EmailVerify 集成 Node.js 模块
Codex 输出:
import NodeCache from 'node-cache';
interface VerificationResult {
email: string;
status: 'valid' | 'invalid' | 'unknown';
score: number;
result: {
deliverable: boolean;
disposable: boolean;
role: boolean;
};
}
class EmailVerifyClient {
private apiKey: string;
private cache: NodeCache;
private baseUrl = 'https://api.emailverify.ai/v1';
constructor(apiKey: string, cacheTTL: number = 3600) {
this.apiKey = apiKey;
this.cache = new NodeCache({ stdTTL: cacheTTL });
}
async verify(email: string): Promise<VerificationResult> {
// 首先检查缓存
const cached = this.cache.get<VerificationResult>(email);
if (cached) return cached;
const response = await fetch(`${this.baseUrl}/verify`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ email }),
});
const result = await response.json();
// 缓存结果
this.cache.set(email, result);
return result;
}
async verifyBulk(emails: string[]): Promise<VerificationResult[]> {
const response = await fetch(`${this.baseUrl}/verify/bulk`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ emails }),
});
return response.json();
}
}
export default EmailVerifyClient;代码生成模式
模式 1: 验证中间件
提示: Express 中间件,用于验证请求体中的邮箱
import { Request, Response, NextFunction } from 'express';
export const validateEmail = async (
req: Request,
res: Response,
next: NextFunction
) => {
const { email } = req.body;
if (!email) {
return res.status(400).json({ error: '邮箱地址是必需的' });
}
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 }),
});
const result = await response.json();
if (result.status === 'invalid') {
return res.status(400).json({ error: '无效的邮箱地址' });
}
if (result.result.disposable) {
return res.status(400).json({ error: '不允许使用临时邮箱' });
}
req.verificationResult = result;
next();
};模式 2: React Hook
提示: 带防抖的邮箱验证 React hook
import { useState, useEffect } from 'react';
import { useDebouncedCallback } from 'use-debounce';
interface VerificationState {
isLoading: boolean;
isValid: boolean | null;
result: any;
error: string | null;
}
export function useEmailVerification(debounceMs: number = 500) {
const [state, setState] = useState<VerificationState>({
isLoading: false,
isValid: null,
result: null,
error: null,
});
const verify = useDebouncedCallback(async (email: string) => {
if (!email || !email.includes('@')) {
setState({ isLoading: false, isValid: null, result: null, error: null });
return;
}
setState(prev => ({ ...prev, isLoading: true, error: null }));
try {
const response = await fetch('/api/verify-email', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email }),
});
const result = await response.json();
setState({
isLoading: false,
isValid: result.status === 'valid',
result,
error: null,
});
} catch (error) {
setState({
isLoading: false,
isValid: null,
result: null,
error: '验证失败',
});
}
}, debounceMs);
return { ...state, verify };
}