EMAIL

Email Module in Vint

The Email module in Vint provides email validation and processing functions. This module helps you validate email addresses, extract components, and normalize email formats for consistent processing.


Importing the Email Module

To use the Email module, simply import it:

import email

Functions and Examples

1. Validate Email Address (validate)

The validate function checks if a given string is a valid email address format.

Syntax:

validate(emailAddress)

Example:

import email

print("=== Email Validation Example ===")

// Valid email addresses
valid_emails = [
    "user@example.com",
    "john.doe@company.org",
    "test.email+tag@domain.co.uk"
]

// Invalid email addresses
invalid_emails = [
    "not-an-email",
    "@example.com",
    "user@",
    "user..name@example.com"
]

print("Valid Emails:")
for valid_email in valid_emails {
    result = email.validate(valid_email)
    print("  " + valid_email + " -> " + string(result))
}

print("\nInvalid Emails:")
for invalid_email in invalid_emails {
    result = email.validate(invalid_email)
    print("  " + invalid_email + " -> " + string(result))
}

2. Extract Domain (extractDomain)

The extractDomain function extracts the domain part from an email address.

Syntax:

extractDomain(emailAddress)

Example:

import email

print("=== Email Domain Extraction Example ===")
email_address = "john.doe@example.com"
domain = email.extractDomain(email_address)
print("Email:  ", email_address)
print("Domain: ", domain)
// Output: Domain: example.com

3. Extract Username (extractUsername)

The extractUsername function extracts the username part (before @) from an email address.

Syntax:

extractUsername(emailAddress)

Example:

import email

print("=== Email Username Extraction Example ===")
email_address = "john.doe@example.com"
username = email.extractUsername(email_address)
print("Email:    ", email_address)
print("Username: ", username)
// Output: Username: john.doe

4. Normalize Email (normalize)

The normalize function converts an email address to lowercase and trims whitespace for consistent formatting.

Syntax:

normalize(emailAddress)

Example:

import email

print("=== Email Normalization Example ===")
messy_email = "  John.DOE@EXAMPLE.COM  "
normalized = email.normalize(messy_email)
print("Original:   ", messy_email)
print("Normalized: ", normalized)
// Output: Normalized: john.doe@example.com

Complete Usage Example

import email

print("=== Email Module Complete Example ===")

// Process a list of email addresses
email_list = [
    "  Alice@COMPANY.COM  ",
    "bob.smith@example.org",
    "CHARLIE@DOMAIN.CO.UK",
    "invalid-email",
    "diana.jones@website.net"
]

print("Processing email addresses:")
for email_addr in email_list {
    print("\n--- Processing: " + email_addr + " ---")
    
    // Normalize the email first
    normalized = email.normalize(email_addr)
    print("Normalized: " + normalized)
    
    // Validate the email
    is_valid = email.validate(normalized)
    print("Valid: " + string(is_valid))
    
    if is_valid {
        // Extract components
        username = email.extractUsername(normalized)
        domain = email.extractDomain(normalized)
        
        print("Username: " + username)
        print("Domain: " + domain)
        
        // Example: Check for specific domains
        if domain == "company.com" {
            print("✓ Corporate email detected")
        } else {
            print("→ External email")
        }
    } else {
        print("✗ Invalid email format")
    }
}

Use Cases

  • User Registration: Validate email addresses during account creation
  • Email Lists: Clean and normalize email addresses in mailing lists
  • Domain Analysis: Extract domains for statistical analysis
  • Email Routing: Route emails based on domain or username patterns
  • Data Cleaning: Standardize email formats in databases

Advanced Example: Email Domain Statistics

import email

print("=== Email Domain Statistics ===")

emails = [
    "user1@gmail.com",
    "user2@company.com",
    "user3@gmail.com",
    "user4@yahoo.com",
    "user5@company.com",
    "user6@outlook.com"
]

domain_count = {}

for email_addr in emails {
    if email.validate(email_addr) {
        domain = email.extractDomain(email_addr)
        
        if domain in domain_count {
            domain_count[domain] = domain_count[domain] + 1
        } else {
            domain_count[domain] = 1
        }
    }
}

print("Domain statistics:")
for domain, count in domain_count {
    print("  " + domain + ": " + string(count) + " emails")
}

Summary of Functions

FunctionDescriptionReturn Type
validateValidates email address formatBoolean
extractDomainExtracts domain part from emailString
extractUsernameExtracts username part from emailString
normalizeNormalizes email to lowercase and trimsString

The Email module provides essential functionality for working with email addresses safely and efficiently in VintLang applications.