How afair/email_address works
This Ruby gem validates and transforms end-user email addresses; it is a library workflow rather than a standalone service. Callers use the EmailAddress helpers or construct an Address, which normalizes and splits input into local and host parts, then validates those parts according to configuration. Host validation may consult DNS and exchanger records. Address operations also provide canonical, base, digest-reference, redaction, munging, and SRS forms. Optional ActiveRecord integrations validate model fields and cast or serialize address values. The graph reflects the sampled runtime code and README capabilities; unsampled implementation details are represented only where the file tree supports them.
Main entry points: address.rb Address model · host.rb Host part · active_record_validator.rb ActiveRecord validator · config.rb Rules and providers
Components 15
Public API
- EmailAddress API
lib/email_address.rb
Address Processing
- Address model
lib/email_address/address.rb - SRS rewriter
lib/email_address/rewriter.rb - Local part
lib/email_address/local.rb
Validation and DNS
- Host part
lib/email_address/host.rb - Rules and providers
lib/email_address/config.rb - Error messages
lib/email_address/messages.yaml - MX exchanger lookup
lib/email_address/exchanger.rb
Rails Integration
- ActiveRecord validator
lib/email_address/active_record_validator.rb - Email address type
lib/email_address/email_address_type.rb - Canonical address type
lib/email_address/canonical_email_address_type.rb
Other components
- Library caller
- DNS resolver
- SMTP server
- Rails application
Connections 21
- Library caller → EmailAddress API: calls helpers
- EmailAddress API → Address model: constructs address
- Address model → SRS rewriter: parses SRS
- Address model → Local part: parses local
- Address model → Host part: parses host
- Address model → Local part: validates local
- Address model → Host part: validates host
- Address model → Rules and providers: loads error text
- Host part → Rules and providers: reads provider rules
- Host part → MX exchanger lookup: gets exchangers
- Host part → SMTP server: opens connection
- Address model → SMTP server: checks recipient
- MX exchanger lookup → DNS resolver: queries MX records
- Host part → DNS resolver: queries DNS
- Rails application → ActiveRecord validator: runs validation
- ActiveRecord validator → Address model: validates value
- ActiveRecord validator → Rules and providers: gets error text
- Rails application → Email address type: casts and stores
- Email address type → Address model: normalizes value
- Rails application → Canonical address type: casts and stores
- Canonical address type → Address model: canonicalizes value