UNPKG

qed-mail

Version:

📮 A NodeJS library for checking if an email address exists without sending any email.

37 lines (28 loc) • 934 B
import { checkMX } from "./mx"; import { checkSMTP } from "./smtp"; import { checkSyntax } from "./syntax"; import { Result } from "./types"; const DEFAULT_RESULT = { reachable: false, syntax: { valid: false }, mx: { valid: false }, smtp: { valid: false }, }; async function checkEmail(email: string): Promise<Result> { const result: Result = { email, ...DEFAULT_RESULT }; const syntax = checkSyntax(email); if (!syntax.valid) { return { ...result, syntax }; } const mx = await checkMX(syntax.domain!); if (!mx.valid || !mx.mxRecords) { return { ...result, syntax, mx }; } const records = mx.mxRecords.sort((a, b) => a.priority - b.priority); const smtp = await checkSMTP(email, records[0]!.exchange, 25); if (!smtp.valid) { return { ...result, syntax, mx, smtp }; } return { ...result, reachable: true, syntax, mx, smtp }; } export { checkEmail, checkMX, checkSMTP, checkSyntax };