Codex CLI
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 };
}