qed-mail
Version:
📮 A NodeJS library for checking if an email address exists without sending any email.
37 lines (28 loc) • 934 B
text/typescript
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 };