检查电子邮件域类型(个人电子邮件或公司电子邮件)

发布于 2025-01-09 15:18:37 字数 413 浏览 0 评论 0原文

示例

isPersonalEmail("[email protected]") // true
isPersonalEmail("[email protected]") // false

我找不到 NPM 包来执行此操作 我需要在 Node.js 服务器中检查电子邮件

Example

isPersonalEmail("[email protected]") // true
isPersonalEmail("[email protected]") // false

I can't find NPM package do that
I need to check email in node.js server

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剩余の解释 2025-01-16 15:18:37

我找到了两个 npm 软件包,您可以使用它们来实现这一目标:

免费电子邮件域名 by Kiko Beats

该软件包基于 HubSpot 阻止的域

电子邮件提供商 由 derhuerst

提供相同的解决方案,优点是可以选择使用列表中的所有 4k 域,或仅使用 312 个公共域。他对共同点的定义如下:

common.json 包含 Majestic Million 排名 << 的内容100000。


完整解决方案

我还偶然发现了您在提取域时可能需要考虑的相关问题

const emailProviders = require("email-providers/all.json")
const parser = require('tld-extract');
const validator = require('validator');

const companyEmail = "[email protected]"
const personalEmail = "[email protected]"
const personalEmailWithSubdomain = "[email protected]"

// 1. You should validate that the string is an actual email as well
// if (!validator.isEmail(email)) return error or something...

const isPersonalEmail = (email) => {

    // 2. Extract the domain
    const broken = email.split('@')
    const address = `http://${broken[broken.length - 1]}`
    const { domain } = parser(address);

    // 3. And check!
    return emailProviders.includes(domain)
}

console.log(isPersonalEmail(companyEmail)) // false
console.log(isPersonalEmail(personalEmail)) // true
console.log(isPersonalEmail(personalEmailWithSubdomain)) // true

I found two npm packages that you can use to achieve that:

Free Email Domains by Kiko Beats

The package is based on HubSpot-blocked domains

Email Providers by derhuerst

Provides the same solution, with the advantage of having the option to use all 4k domains in the list, or the 312 common domains only. he defines common as follows:

common.json contains those with an Majestic Million rank of < 100000.


Full Solution

I also stumbled upon a relevant issue that you might want to consider when you extract the domain.

const emailProviders = require("email-providers/all.json")
const parser = require('tld-extract');
const validator = require('validator');

const companyEmail = "[email protected]"
const personalEmail = "[email protected]"
const personalEmailWithSubdomain = "[email protected]"

// 1. You should validate that the string is an actual email as well
// if (!validator.isEmail(email)) return error or something...

const isPersonalEmail = (email) => {

    // 2. Extract the domain
    const broken = email.split('@')
    const address = `http://${broken[broken.length - 1]}`
    const { domain } = parser(address);

    // 3. And check!
    return emailProviders.includes(domain)
}

console.log(isPersonalEmail(companyEmail)) // false
console.log(isPersonalEmail(personalEmail)) // true
console.log(isPersonalEmail(personalEmailWithSubdomain)) // true
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文