Project Icon

check-if-email-exists

开源电子邮件地址验证工具无需发送实际邮件

check-if-email-exists是一款开源电子邮件验证工具,无需发送实际邮件即可验证地址有效性。它具备语法检查、DNS验证和SMTP服务器验证等功能,支持HTTP后端、CLI和Rust库多种使用方式。此工具适合需要批量验证邮箱的开发者和企业使用,有助于提升邮件投递成功率。

Crate 文档 Docker Actions 状态



reacher

check-if-email-exists

无需发送任何邮件即可检查电子邮件地址是否存在。
附带⚙️ HTTP 后端




👉 在线演示:https://reacher.email

这是开源项目,但我也提供了一个 SaaS 解决方案,将 check-if-email-exists 打包在一个友好的网页界面中。如果您感兴趣,可以在 Reacher 了解更多信息。如有任何问题,可以通过 amaury@reacher.email 联系我。


开始使用

使用 check-if-email-exists 的 3 种非 SaaS 方式。

1. ⚙️ 使用 Docker 的 HTTP 后端(热门方法 🥇)[完整文档]

此选项允许您使用 Docker 🐳 在云实例或自己的服务器上运行 HTTP 后端。请注意,必须开放出站端口 25。

docker run -p 8080:8080 reacherhq/backend:latest

然后发送 POST http://localhost:8080/v0/check_email 请求,请求体如下:

{
    "to_email": "someone@gmail.com",
    "from_email": "my@my-server.com", // (可选)在 SMTP `FROM` 命令中使用的电子邮件,默认为 "user@example.org"
    "hello_name": "my-server.com",    // (可选)在 SMTP `EHLO` 命令中使用的名称,默认为 "localhost"
    "proxy": {                        // (可选)用于验证的 SOCK5 代理,默认为空
        "host": "my-proxy.io",
        "port": 1080,
        "username": "me",             // (可选)代理用户名
        "password": "pass"            // (可选)代理密码
    },
    "smtp_port": 587                  // (可选)用于电子邮件验证的 SMTP 端口,默认为 25
}

2. 下载 CLI [完整文档]

注意:CLI 二进制文件不连接任何后端,它直接从您的计算机检查电子邮件。

前往发布页面并下载适用于您平台的二进制文件。

> $ check_if_email_exists --help
check_if_email_exists 0.9.1
无需发送邮件即可检查电子邮件地址是否存在。

用法:
    check_if_email_exists [FLAGS] [OPTIONS] [TO_EMAIL]

查看专用 README.md了解所有选项和标志。

3. 程序化使用 [完整文档]

在您自己的 Rust 项目中,您可以在 Cargo.toml 中添加 check-if-email-exists

[dependencies]
check-if-email-exists = "0.9"

并在代码中如下使用:

use check_if_email_exists::{check_email, CheckEmailInput, CheckEmailInputProxy};

async fn check() {
    // 假设我们要测试 someone@gmail.com 的可投递性。
    let mut input = CheckEmailInput::new(vec!["someone@gmail.com".into()]);

    // 使用 async/await 语法验证此电子邮件。
    let result = check_email(&input).await;

    // `result` 是一个 `Vec<CheckEmailOutput>`,其中 CheckEmailOutput
    // 结构包含了我们电子邮件的所有信息。
    println!("{:?}", result);
}

参考文档托管在 docs.rs 上。

✈️ JSON 输出

输出将是以下格式的 JSON,字段应该是自解释的。对于 someone@gmail.com(注意它被 Gmail 禁用),以下是确切的输出:

{
	"input": "someone@gmail.com",
	"is_reachable": "invalid",
	"misc": {
		"is_disposable": false,
		"is_role_account": false
	},
	"mx": {
		"accepts_mail": true,
		"records": [
			"alt3.gmail-smtp-in.l.google.com.",
			"gmail-smtp-in.l.google.com.",
			"alt1.gmail-smtp-in.l.google.com.",
			"alt4.gmail-smtp-in.l.google.com.",
			"alt2.gmail-smtp-in.l.google.com."
		]
	},
	"smtp": {
		"can_connect_smtp": true,
		"has_full_inbox": false,
		"is_catch_all": false,
		"is_deliverable": false,
		"is_disabled": true
	},
	"syntax": {
		"domain": "gmail.com",
		"is_valid_syntax": true,
		"username": "someone",
		"suggestion": null
	}
}

这个工具检查什么?

是否包含功能描述JSON 字段
邮箱可达性我们对发送邮件到此地址的信心如何?可能是 saferiskyinvalidunknown 之一。is_reachable
语法验证地址的语法是否有效?syntax.is_valid_syntax
DNS 记录验证邮箱地址的域名是否有有效的 MX DNS 记录?mx.accepts_mail
一次性邮箱地址 (DEA) 验证该地址是否由已知的一次性邮箱地址提供商提供?misc.is_disposable
SMTP 服务器验证是否能成功连接到邮箱地址域名的邮件交换服务器?smtp.can_connect_smtp
邮件可投递性发送到此地址的邮件是否可投递?smtp.is_deliverable
邮箱已禁用此邮箱地址是否已被邮件提供商禁用?smtp.is_disabled
邮箱已满此邮箱的收件箱是否已满?smtp.has_full_inbox
泛接收地址此邮箱地址是否为泛接收地址?smtp.is_catch_all
角色账户验证该邮箱地址是否为知名的角色账户?misc.is_role_account
Gravatar 链接Gravatar 邮箱地址头像的链接misc.gravatar_url
Have I Been Pwned?此邮箱是否在数据泄露中被泄露?misc.haveibeenpwned
🔜免费邮箱提供商检查该邮箱地址是否绑定到已知的免费邮箱提供商?Issue #89
🔜特定提供商的语法验证根据目标邮件提供商的语法规则,该地址的语法是否有效?Issue #90
🔜蜜罐检测测试的邮箱地址是否隐藏了蜜罐Issue #91

🤔 为什么?

许多在线服务(https://hunter.io、https://verify-email.org、https://email-checker.net)以收费方式提供此服务。这里提供了一个开源替代方案。

许可证

check-if-email-exists 的源代码采用双重许可模式提供。

商业许可

如果您想使用 check-if-email-exists 开发商业网站、工具和应用程序,商业许可是合适的选择。通过此选项,您的源代码将保持专有。请在 https://reacher.email/pricing 购买 check-if-email-exists 商业许可。

开源许可

如果您正在创建一个与 GNU Affero GPL 许可证 v3 兼容的开源应用程序,您可以根据 AGPL-3.0 的条款使用 check-if-email-exists

➡️ 阅读更多 关于 Reacher 的许可信息。

❓ 常见问题

is_reachable: "unknown" 是什么意思?

这意味着服务器目前不允许实时验证邮箱。这可能由多种原因造成:您的 IP 被列入黑名单,SMTP 端口 25 被封锁,邮箱账户暂时接收过多邮件(垃圾邮件保护)... 或者邮件提供商根本不允许实时验证。此 "unknown" 情况的详细信息可在 smtp.errormx.error 字段中找到。

库运行时卡住/耗时很长/1 分钟后没有任何显示。

大多数 ISP 会封锁通过 25 端口的出站 SMTP 请求,以防止垃圾邮件。check-if-email-exists 需要开放此端口以连接到邮箱的 SMTP 服务器,因此在这些 ISP 后无法工作,会一直挂起直到超时。这个问题没有简单的解决方法,请参见 这个 StackOverflow 帖子。一种解决方案是租用一个具有静态 IP 且没有端口限制的 Linux 云服务器,例如查看我们的自托管指南了解哪些云提供商开放 25 端口。

要详细查看二进制文件在后台的运行情况,请使用 RUST_LOG=debug 在详细模式下运行以查看日志。

我还有其他问题。

请随时查看 Reacher 的 FAQ

🔨 从源代码构建

从源代码构建 CLIHTTP 后端

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号