38个版本
0.9.1 | 2023年10月10日 |
---|---|
0.9.0 | 2022年8月15日 |
0.8.32 | 2022年8月13日 |
0.8.30 | 2022年6月2日 |
0.5.0 | 2019年11月16日 |
#9 in 电子邮件
2,117每月下载次数
用于 4 个crates(3个直接使用)
115KB
2K SLoC
check-if-email-exists
在不发送任何电子邮件的情况下检查电子邮件地址是否存在。
附带 ⚙️ HTTP后端。
👉 在线演示: https://reacher.email
这是一个开源项目,但我还提供了一种 SaaS 解决方案,它将 check-if-email-exists
打包在一个友好的Web界面中。如果您感兴趣,请访问 Reacher 获取更多信息。如果您有任何问题,可以发送邮件至 [email protected]。
入门
三种非SaaS方式开始使用 check-if-email-exists
。
1. ⚙️ 使用Docker的HTTP后端(最受欢迎的方法 🥇) [完整文档]
此选项允许您在云实例或自己的服务器上使用Docker 🐳 运行HTTP后端。请注意,必须打开出站端口25。
docker run -p 8080:8080 reacherhq/backend:latest
然后发送以下内容的 POST http://localhost:8080/v0/check_email
请求
{
"to_email": "[email protected]",
"from_email": "[email protected]", // (optional) email to use in the `FROM` SMTP command, defaults to "[email protected]"
"hello_name": "my-server.com", // (optional) name to use in the `EHLO` SMTP command, defaults to "localhost"
"proxy": { // (optional) SOCK5 proxy to run the verification through, default is empty
"host": "my-proxy.io",
"port": 1080,
"username": "me", // (optional) Proxy username
"password": "pass" // (optional) Proxy password
},
"smtp_port": 587 // (optional) SMTP port to do the email verification, defaults to 25
}
2. 下载CLI [完整文档]
注意:CLI二进制文件不连接到任何后端,它直接从您的计算机检查电子邮件。
前往 发布页面 并下载适合您平台的二进制文件。
> $ check_if_email_exists --help
check_if_email_exists 0.9.1
Check if an email address exists without sending an email.
USAGE:
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() {
// Let's say we want to test the deliverability of [email protected].
let mut input = CheckEmailInput::new(vec!["[email protected]".into()]);
// Verify this email, using async/await syntax.
let result = check_email(&input).await;
// `result` is a `Vec<CheckEmailOutput>`, where the CheckEmailOutput
// struct contains all information about our email.
println!("{:?}", result);
}
参考文档托管在 docs.rs。
✈️ JSON输出
输出将是一个以下格式的JSON,字段应易于理解。对于 someone@gmail.com
(注意,Gmail已禁用),以下是确切的输出
{
"input": "[email protected]",
"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字段 |
---|---|---|---|
✅ | 电子邮件可达性 | 我们发送电子邮件到这个地址有多大的信心?可以是 safe 、risky 、invalid 或 unknown 之一。 |
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 URL | 电子邮件地址配置文件图片的Gravatar URL | misc.gravatar_url |
🔜 | 免费电子邮件提供商检查 | 这个电子邮件地址是否绑定到已知的免费电子邮件提供商? | 问题 #89 |
🔜 | 语法验证,特定于提供商 | 根据目标邮件提供商的语法规则,地址的语法是否有效? | 问题 #90 |
🔜 | 蜜罐检测 | 正在测试的电子邮件地址是否隐藏了一个蜜罐? | 问题 #91 |
🔜 | 我是否被泄露过? | 这个电子邮件是否在数据泄露中受到损害? | 问题 #289 |
🤔 为什么?
许多在线服务(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.error
和mx.error
字段。
库在1分钟后挂起/运行时间过长/没有任何显示。
大多数ISP通过端口25阻止出站SMTP请求,以防止垃圾邮件。check-if-email-exists
需要此端口打开以连接到电子邮件的SMTP服务器,因此在这些ISP后面无法工作,并将挂起,直到超时。遗憾的是,没有简单的解决方案,例如查看此StackOverflow线程。一种解决方案是租用一个带有静态IP和未阻止端口的Linux云服务器,例如,查看我们的自托管指南,了解哪些云提供商打开端口25。
要详细了解二进制文件在后台执行的操作,请以详细模式运行,使用RUST_LOG=debug
查看日志。
我还有另一个问题。
请随意查看Reacher的常见问题解答。
🔨 从源代码构建
依赖项
~18–36MB
~542K SLoC