EmailVerify LogoEmailVerify

Node.js

Node.js email checker SDK. Install, configure, verify emails with JavaScript. Code examples included.

공식 EmailVerify Node.js SDK는 Node.js 애플리케이션에 이메일 검증을 통합하는 간단하고 효율적인 방법을 제공합니다.

설치

npm install @emailverify/node
# or
yarn add @emailverify/node
# or
pnpm add @emailverify/node

빠른 시작

import { EmailVerify } from '@emailverify/node';

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

// Verify a single email
const result = await client.verify('user@example.com');
console.log(result.status); // 'valid', 'invalid', 'unknown', or 'accept_all'

구성

클라이언트 옵션

const client = new EmailVerify({
  apiKey: 'your-api-key',

  // Optional configurations
  timeout: 30000,           // Request timeout in ms (default: 30000)
  retries: 3,               // Number of retry attempts (default: 3)
  baseUrl: 'https://api.emailverify.ai', // Custom API URL
});

환경 변수

API 키를 환경 변수에 저장하는 것을 권장합니다:

# .env
EMAILVERIFY_API_KEY=your_api_key_here
import { EmailVerify } from '@emailverify/node';

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

단일 이메일 검증

기본 검증

const result = await client.verify('user@example.com');

console.log({
  email: result.email,
  status: result.status,
  score: result.score,
  deliverable: result.result.deliverable,
  disposable: result.result.disposable,
  role: result.result.role,
});

옵션을 사용한 검증

const result = await client.verify('user@example.com', {
  smtpCheck: true,      // Enable SMTP verification
  timeout: 5000,        // Custom timeout for this request
});

응답 구조

interface VerificationResult {
  email: string;
  status: 'valid' | 'invalid' | 'unknown' | 'accept_all';
  result: {
    deliverable: boolean | null;
    valid_format: boolean;
    valid_domain: boolean;
    valid_mx: boolean;
    disposable: boolean;
    role: boolean;
    catchall: boolean;
    free: boolean;
    smtp_valid: boolean | null;
  };
  score: number;
  reason: string | null;
}

대량 검증

대량 작업 제출

const emails = [
  'user1@example.com',
  'user2@example.com',
  'user3@example.com',
];

const job = await client.verifyBulk(emails);
console.log(`Job ID: ${job.id}`);
console.log(`Status: ${job.status}`);

작업 상태 확인

const status = await client.getBulkJobStatus(job.id);

console.log({
  id: status.id,
  status: status.status,      // 'pending', 'processing', 'completed', 'failed'
  total: status.total,
  processed: status.processed,
  valid: status.valid,
  invalid: status.invalid,
});

결과 가져오기

// Wait for job completion
const results = await client.getBulkJobResults(job.id);

for (const result of results) {
  console.log(`${result.email}: ${result.status}`);
}

웹훅 알림

폴링 대신 작업 완료 시 알림을 받을 웹훅을 구성할 수 있습니다:

const job = await client.verifyBulk(emails, {
  webhookUrl: 'https://your-domain.com/webhooks/emailverify',
});

크레딧 관리

사용 가능한 크레딧 확인

const credits = await client.getCredits();

console.log({
  available: credits.available,
  used: credits.used,
  total: credits.total,
});

오류 처리

오류 유형

import {
  EmailVerify,
  EmailVerifyError,
  AuthenticationError,
  RateLimitError,
  ValidationError,
} from '@emailverify/node';

try {
  const result = await client.verify('invalid-email');
} catch (error) {
  if (error instanceof AuthenticationError) {
    console.error('Invalid API key');
  } else if (error instanceof RateLimitError) {
    console.error(`Rate limited. Retry after ${error.retryAfter} seconds`);
  } else if (error instanceof ValidationError) {
    console.error(`Invalid input: ${error.message}`);
  } else if (error instanceof EmailVerifyError) {
    console.error(`API error: ${error.message}`);
  }
}

재시도 로직

SDK는 지수 백오프를 사용하여 실패한 요청을 자동으로 재시도합니다:

const client = new EmailVerify({
  apiKey: process.env.EMAILVERIFY_API_KEY,
  retries: 5,                    // Max retry attempts
  retryDelay: 1000,              // Initial delay in ms
  retryMaxDelay: 30000,          // Max delay between retries
});

프레임워크 통합

Express.js

import express from 'express';
import { EmailVerify } from '@emailverify/node';

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

app.post('/api/verify-email', async (req, res) => {
  const { email } = req.body;

  try {
    const result = await client.verify(email);

    if (result.status === 'invalid') {
      return res.status(400).json({
        valid: false,
        message: 'Please enter a valid email address',
      });
    }

    if (result.result.disposable) {
      return res.status(400).json({
        valid: false,
        message: 'Disposable emails are not allowed',
      });
    }

    res.json({ valid: true, result });
  } catch (error) {
    res.status(500).json({ error: 'Verification failed' });
  }
});

Fastify

import Fastify from 'fastify';
import { EmailVerify } from '@emailverify/node';

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

fastify.post('/verify', async (request, reply) => {
  const { email } = request.body;
  const result = await client.verify(email);
  return result;
});

Next.js API Route

// pages/api/verify.js
import { EmailVerify } from '@emailverify/node';

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

export default async function handler(req, res) {
  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  const { email } = req.body;

  try {
    const result = await client.verify(email);
    res.status(200).json(result);
  } catch (error) {
    res.status(500).json({ error: 'Verification failed' });
  }
}

완전한 예시

이메일 검증을 포함한 사용자 등록

import { EmailVerify } from '@emailverify/node';

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

async function validateRegistrationEmail(email) {
  const result = await client.verify(email);

  // Reject invalid emails
  if (result.status === 'invalid') {
    return {
      valid: false,
      reason: 'invalid_email',
      message: 'This email address is invalid',
    };
  }

  // Reject disposable emails
  if (result.result.disposable) {
    return {
      valid: false,
      reason: 'disposable',
      message: 'Please use a permanent email address',
    };
  }

  // Warn about role-based emails
  if (result.result.role) {
    return {
      valid: true,
      warning: 'role_based',
      message: 'Using a personal email is recommended',
    };
  }

  // Accept valid emails
  return {
    valid: true,
    score: result.score,
  };
}

// Usage
const validation = await validateRegistrationEmail('user@example.com');
if (!validation.valid) {
  console.error(validation.message);
}

TypeScript 지원

SDK에는 TypeScript 정의가 기본으로 포함되어 있습니다:

import {
  EmailVerify,
  VerificationResult,
  BulkJob,
  ClientOptions
} from '@emailverify/node';

const options: ClientOptions = {
  apiKey: process.env.EMAILVERIFY_API_KEY!,
  timeout: 30000,
};

const client = new EmailVerify(options);

const result: VerificationResult = await client.verify('user@example.com');

다음 단계

On this page