From ff34b11f609ebc9fde2caff2b859c1e678a19f11 Mon Sep 17 00:00:00 2001 From: Jesse Palmer Date: Thu, 11 Apr 2024 15:35:41 -0700 Subject: [PATCH 1/3] add disable mxcheck param --- src/index.js | 13 +++++++++---- test/index.test.js | 28 +++++++++++++++++++++------- 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/index.js b/src/index.js index 4ca7c49..b93fa67 100644 --- a/src/index.js +++ b/src/index.js @@ -34,17 +34,22 @@ const checkMxRecords = async (email) => { /** * A sophisticated email validator that checks both the format of the email - * address and the existence of MX records for the domain. + * address and the existence of MX records for the domain, depending on the + * checkMx parameter. * * @param {string} email - The email address to validate. + * @param {boolean} checkMx - Determines whether to check for MX records. + * Defaults to true. * @return {Promise} - Promise that resolves to true if the email is * valid, false otherwise. */ -const emailValidator = async (email) => { +const emailValidator = async (email, checkMx = true) => { if (!validateRfc5322(email)) return false; - const hasMxRecords = await checkMxRecords(email); - if (!hasMxRecords) return false; + if (checkMx) { + const hasMxRecords = await checkMxRecords(email); + if (!hasMxRecords) return false; + } return true; }; diff --git a/test/index.test.js b/test/index.test.js index 080b801..6043363 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -1,15 +1,29 @@ import emailValidator from '../src/index.js'; describe('Email Validator', () => { - test('should validate correct email format', async () => { - expect(await emailValidator('test@example.com')).toBe(true); - }); + // Testing with MX record check enabled + describe('with MX record check', () => { + test('should validate correct email format and MX record exists', async () => { + expect(await emailValidator('test@example.com')).toBe(true); + }); - test('should reject incorrect email format', async () => { - expect(await emailValidator('invalid-email')).toBe(false); + test('should reject email from domain without MX records', async () => { + expect(await emailValidator('test@adafwefewsd.com')).toBe(false); + }); }); - test('should reject email from domain without MX records', async () => { - expect(await emailValidator('test@adafwefewsd.com')).toBe(false); + // Testing without MX record check + describe('without MX record check', () => { + test('should validate correct email format regardless of MX records', async () => { + expect(await emailValidator('test@example.com', false)).toBe(true); + }); + + test('should reject incorrect email format regardless of MX records', async () => { + expect(await emailValidator('invalid-email', false)).toBe(false); + }); + + test('should validate email from domain without MX records', async () => { + expect(await emailValidator('test@adafwefewsd.com', false)).toBe(true); + }); }); }); From 2876cedc1c161f5fa8852e884a9af6fad931981a Mon Sep 17 00:00:00 2001 From: Jesse Palmer Date: Thu, 11 Apr 2024 16:02:22 -0700 Subject: [PATCH 2/3] update docs --- README.md | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index cc49a8c..070a541 100644 --- a/README.md +++ b/README.md @@ -3,16 +3,15 @@ # Node Email Verifier -Node Email Verifier is a email validation library for Node.js that checks if an -email address has a valid format and verifies the domain's MX (Mail Exchange) +Node Email Verifier is an email validation library for Node.js that checks if an +email address has a valid format and optionally verifies the domain's MX (Mail Exchange) records to ensure it can receive emails. ## Features -- **RFC 5322 Format Validation**: Validates email addresses against the standard -email formatting rules. -- **MX Record Checking**: Verifies that the domain of the email address has -valid MX records indicating that it can receive emails. +- **RFC 5322 Format Validation**: Validates email addresses against the standard email formatting rules. +- **MX Record Checking**: Verifies that the domain of the email address has valid MX records indicating that it can receive emails. This check can be disabled using a parameter. + ## Installation @@ -24,36 +23,49 @@ npm install node-email-verifier --save ## Usage -Here's a simple example of how to use Node Email Verifier: +Here's how to use Node Email Verifier, with and without MX record checking: ```javascript import emailValidator from 'node-email-verifier'; -async function validateEmail(email) { +// Example with MX record checking +async function validateEmailWithMx(email) { + try { + const isValid = await emailValidator(email, true); + console.log(`Is "${email}" a valid email address with MX checking?`, isValid); + } catch (error) { + console.error('Error validating email with MX checking:', error); + } +} + +// Example without MX record checking +async function validateEmailWithoutMx(email) { try { - const isValid = await emailValidator(email); - console.log(`Is "${email}" a valid email address?`, isValid); + const isValid = await emailValidator(email, false); + console.log(`Is "${email}" a valid email address without MX checking?`, isValid); } catch (error) { - console.error('Error validating email:', error); + console.error('Error validating email without MX checking:', error); } } -validateEmail('test@example.com').then(); +validateEmailWithMx('test@example.com').then(); +validateEmailWithoutMx('test@example.com').then(); ``` ## API -### ```async emailValidator(email)``` +### ```async emailValidator(email, checkMx = true)``` -Validates the given email address. +Validates the given email address, with an option to skip MX record verification. #### Parameters - ```email``` (string): The email address to validate. +- ```checkMx``` (boolean): Whether to check for MX records, this defaults to true. #### Returns -- ```Promise```: A promise that resolves to true if the email address is valid, false otherwise. +- ```Promise```: A promise that resolves to true if the email address is valid and, if checked, has MX records; false otherwise. ## Contributing From 5325d432e79d90c38ac876a83d3c19d03f8025e6 Mon Sep 17 00:00:00 2001 From: Jesse Palmer Date: Thu, 11 Apr 2024 16:06:23 -0700 Subject: [PATCH 3/3] remove unneeded second param in doc --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 070a541..934b6f2 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ import emailValidator from 'node-email-verifier'; // Example with MX record checking async function validateEmailWithMx(email) { try { - const isValid = await emailValidator(email, true); + const isValid = await emailValidator(email); console.log(`Is "${email}" a valid email address with MX checking?`, isValid); } catch (error) { console.error('Error validating email with MX checking:', error);