Rust邮件验证库mailchecker的使用,高效检测和过滤无效或临时邮箱地址

Rust邮件验证库mailchecker的使用,高效检测和过滤无效或临时邮箱地址

MailChecker是一个跨语言的电子邮件验证库,它基于包含超过55,000个可丢弃邮箱域名的数据库。

主要功能:

  1. 验证电子邮件格式(使用validator.js的电子邮件正则表达式)
  2. 验证电子邮件是否不是临时邮件(如yopmail等)

Rust示例代码

以下是内容中提供的Rust示例:

extern crate mailchecker;

assert_eq!(true, mailchecker::is_valid("plop@plop.com"));
assert_eq!(false, mailchecker::is_valid("\nok@gmail.com\n"));
assert_eq!(false, mailchecker::is_valid("ok@guerrillamailblock.com"));

完整示例demo

下面是一个更完整的Rust使用示例:

// 导入mailchecker库
extern crate mailchecker;

fn main() {
    // 测试有效邮箱
    let valid_email = "user@example.com";
    if mailchecker::is_valid(valid_email) {
        println!("{} 是有效的邮箱地址", valid_email);
    } else {
        println!("{} 是无效的邮箱地址", valid_email);
    }

    // 测试临时邮箱
    let temp_email = "temp@yopmail.com";
    if mailchecker::is_valid(temp_email) {
        println!("{} 是有效的邮箱地址", temp_email);
    } else {
        println!("{} 是临时/无效的邮箱地址", temp_email);
    }

    // 测试格式错误的邮箱
    let invalid_email = "not-an-email";
    if mailchecker::is_valid(invalid_email) {
        println!("{} 是有效的邮箱地址", invalid_email);
    } else {
        println!("{} 是无效的邮箱格式", invalid_email);
    }
}

安装

在Cargo.toml中添加依赖:

[dependencies]
mailchecker = "6.0.17"

或者运行命令:

cargo add mailchecker

特点

  • 支持超过55,000个可丢弃邮箱域名的检测
  • 简单易用的API
  • 跨语言支持(包括Rust、NodeJS、Python、PHP等)
  • 开源且持续维护

这个库在需要联系用户并希望避免因无效邮箱导致的通信错误,或需要阻止"垃圾邮箱"的场景中非常有用。


1 回复

Rust邮件验证库mailchecker的使用指南

介绍

mailchecker是一个高效的Rust库,用于检测和过滤无效或临时邮箱地址。它可以帮助你在用户注册或提交表单时,识别并阻止使用一次性/临时邮箱服务的用户,提高应用的用户质量和数据有效性。

主要特性

  • 包含超过5000个临时邮箱域名列表
  • 轻量级且高效
  • 简单易用的API
  • 定期更新的域名数据库

安装方法

Cargo.toml中添加依赖:

[dependencies]
mailchecker = "4.1.0"

完整示例代码

use mailchecker;

fn main() {
    // 示例1: 基本邮箱验证
    let email1 = "user@example.com";
    let email2 = "user@mailinator.com";
    
    println!("检查 {}: {}", email1, if mailchecker::is_valid(email1) { "有效" } else { "无效" });
    println!("检查 {}: {}", email2, if mailchecker::is_valid(email2) { "有效" } else { "无效" });

    // 示例2: 域名黑名单检查
    let domain = "guerrillamail.com";
    if mailchecker::is_domain_blacklisted(domain) {
        println!("{} 在黑名单中", domain);
    }

    // 示例3: 获取所有黑名单域名
    let domains = mailchecker::blacklist();
    println!("当前黑名单域名数量: {}", domains.len());

    // 示例4: 用户注册验证
    let new_user_email = "user@temp-mail.org";
    match validate_email(new_user_email) {
        Ok(_) => println!("邮箱验证通过"),
        Err(e) => println!("验证失败: {}", e),
    }

    // 示例5: 添加自定义黑名单域名
    mailchecker::add_custom_domains(&["my-company-temp.com"]);
    println!("检查 custom@my-company-temp.com: {}", 
        if mailchecker::is_valid("custom@my-company-temp.com") { "有效" } else { "无效" });
}

// 用户注册邮箱验证函数
fn validate_email(email: &str) -> Result<(), String> {
    // 验证邮箱格式(简单示例)
    if !email.contains('@') {
        return Err("邮箱格式不正确".to_string());
    }
    
    // 检查是否临时邮箱
    if !mailchecker::is_valid(email) {
        return Err("请使用永久邮箱地址注册".to_string());
    }
    
    Ok(())
}

代码说明

  1. 基本验证:使用is_valid()函数检查邮箱是否来自临时邮箱服务
  2. 域名检查:使用is_domain_blacklisted()检查特定域名是否在黑名单中
  3. 获取黑名单blacklist()返回所有被屏蔽的域名集合
  4. 自定义黑名单add_custom_domains()添加额外的临时邮箱域名
  5. 实际应用:展示了如何在用户注册流程中整合邮箱验证

注意事项

  1. 该库只验证域名部分,不验证邮箱格式的正确性
  2. 临时邮箱服务不断变化,建议定期更新库版本
  3. 可能会存在少量误判,特别是新出现的临时邮箱服务

通过这个完整的示例,你可以了解如何在Rust项目中使用mailchecker库来验证邮箱地址的有效性,防止用户使用临时邮箱注册。

回到顶部