mailfix 0.37.2 copy "mailfix: ^0.37.2" to clipboard
mailfix: ^0.37.2 copied to clipboard

Package for email validation with domain correction suggestions using configurable similarity algorithms.

Mailfix Logo

Mailfix #

Mailfix is a Dart and Flutter package for email validation, domain typo correction, and email suggestion workflows. It validates email format and can suggest corrected addresses for common domain mistakes such as user@gmial.com or user@hotmial.com.

Use it in signup forms, profile screens, checkout flows, admin tools, and any Dart or Flutter app that needs a better email input experience.

Live demo · GitHub · Issues

Features #

  • Email validation powered by email_validator.
  • Domain typo suggestions for common providers such as Gmail, Outlook, Hotmail, Yahoo, iCloud, AOL, and Live.
  • Custom business or product domains through extraDomains, addDomain, and addDomains.
  • Configurable similarity algorithms: Jaro-Winkler, Levenshtein, and Damerau-Levenshtein.
  • Configurable distance threshold for stricter or more permissive suggestions.
  • Custom email validators and similarity algorithms through small interfaces.
  • Works in Dart and Flutter projects.

Installation #

dependencies:
  mailfix: ^0.37.2

Then run:

dart pub get

For Flutter projects, use:

flutter pub get

Live Demo #

Try Mailfix in your browser without installing anything:

Open the live demo

Use examples such as:

  • user@gmial.com
  • user@hotmial.com
  • user@company.con

The demo shows email validation results and domain typo suggestions in real time.

Quick Start #

import 'package:mailfix/mailfix.dart';

void main() {
  final mailfix = Mailfix();
  final result = mailfix.validateEmail('user@gmial.com');

  print(result.isValid); // true
  print(result.suggestion); // user@gmail.com
}

validateEmail returns an EmailValidationResult with:

  • isValid: whether the email format is valid.
  • suggestion: a corrected email address when a close domain match is found.
  • error: optional error text for custom result flows.

Email Validation #

final mailfix = Mailfix();

final valid = mailfix.validateEmail('user@gmail.com');
print(valid.isValid); // true
print(valid.suggestion); // null

final invalid = mailfix.validateEmail('not-an-email');
print(invalid.isValid); // false
print(invalid.suggestion); // null

Mailfix separates email format validation from domain correction. An email can be valid and still receive a suggestion when the domain looks like a typo.

Domain Typo Suggestions #

final mailfix = Mailfix();

final result = mailfix.validateEmail('customer@hotmial.com');

if (result.suggestion != null) {
  print('Did you mean ${result.suggestion}?');
}

Common examples:

Input Suggestion
user@gmial.com user@gmail.com
user@hotmial.com user@hotmail.com
user@outlok.com user@outlook.com

Custom Domains #

Use custom domains when your app accepts company, product, or organization addresses.

final mailfix = Mailfix(
  extraDomains: ['company.com', 'product.dev'],
);

final result = mailfix.validateEmail('user@company.con');
print(result.suggestion); // user@company.com

You can also add domains after creating the instance:

final mailfix = Mailfix();

mailfix.addDomain('company.com');
mailfix.addDomains(['team.dev', 'example.org']);

Similarity Algorithms #

Jaro-Winkler is the default algorithm because it works well for short strings and common domain typos.

final mailfix = Mailfix(
  algorithm: MailfixSimilarityAlgorithm.damerauLevenshtein,
  maxAllowedDistance: 3,
);

final result = mailfix.validateEmail('user@gmial.com');
print(result.suggestion);

Available algorithms:

  • MailfixSimilarityAlgorithm.jaroWinkler
  • MailfixSimilarityAlgorithm.levenshtein
  • MailfixSimilarityAlgorithm.damerauLevenshtein

For advanced use cases, pass your own SimilarityAlgorithm implementation with the similarityAlgorithm parameter.

Special Characters #

By default, Mailfix restricts selected special characters in the local part of the email address. Enable allowSpecialChars when your app accepts aliases or RFC-style local parts such as user+tag@gmail.com.

final mailfix = Mailfix(allowSpecialChars: true);

final result = mailfix.validateEmail('user+tag@gmail.com');
print(result.isValid); // true

Custom Email Validator #

Use EmailValidator when your app has business-specific rules.

class BusinessEmailValidator implements EmailValidator {
  final _defaultValidator = DefaultEmailValidator();

  @override
  String get name => 'business-email';

  @override
  bool isValid(String email) {
    if (!_defaultValidator.isValid(email)) return false;
    return !email.toLowerCase().endsWith('@disposable.test');
  }
}

final mailfix = Mailfix(
  validator: BusinessEmailValidator(),
);

EmailValidatorInterface is still available as a deprecated compatibility alias. Prefer EmailValidator in new code.

API Overview #

API Purpose
Mailfix Main service for validation and suggestions.
EmailValidationResult Result object with isValid, suggestion, and error.
EmailValidator Interface for custom email validation rules.
SimilarityAlgorithm Interface for custom distance/similarity logic.
EmailDomains Domain collection used by the suggestion engine.

Main Mailfix options:

Option Description
algorithm Selects one of the built-in similarity algorithms.
similarityAlgorithm Uses a custom algorithm implementation.
maxAllowedDistance Controls how close a domain must be to receive a suggestion.
extraDomains Adds custom valid domains during initialization.
allowSpecialChars Allows special characters in the email local part.
validator Replaces the default email validator.

When to Use Mailfix #

Mailfix is useful when you want to reduce failed signups, support requests, and email delivery mistakes caused by mistyped domains. It is not an email deliverability checker and does not verify whether an inbox exists.

Contributing #

Issues and pull requests are welcome. Before opening a pull request, run:

2
likes
160
points
185
downloads
screenshot

Documentation

API reference

Publisher

verified publishervaldir.dev.br

Weekly Downloads

Package for email validation with domain correction suggestions using configurable similarity algorithms.

Repository (GitHub)
View/report issues

Topics

#email #validation #domain-correction #levenshtein #jaro-winkler

License

MIT (license)

Dependencies

email_validator

More

Packages that depend on mailfix