Skip to content

Latest commit

 

History

History
77 lines (60 loc) · 3.23 KB

File metadata and controls

77 lines (60 loc) · 3.23 KB

PosInformatique.Foundations.EmailAddresses

NuGet version NuGet downloads

Introduction

This package provides a strongly-typed EmailAddress value object that ensures only valid email addresses (RFC 5322 compliant) can be instantiated.

It simplifies validation, parsing, comparison, and string formatting of email addresses.

Install

You can install the package from NuGet:

dotnet add package PosInformatique.Foundations.EmailAddresses

Features

  • Strongly-typed email address validation and parsing
  • Ensures email addresses are formatted according to RFC 5322
  • Email values are always stored and compared in lowercase to avoid case-sensitive inconsistencies
  • Implements IEquatable<T>, IComparable<T>, and operator overloads for equality and ordering
  • Provides IFormattable and IParsable<T> for seamless integration with .NET APIs
  • Implicit conversion between string and EmailAddress

Use cases

  • Validation: prevent invalid emails from being stored in your domain entities.
  • Type safety: avoid dealing with raw strings when working with email addresses.
  • Conversion: use implicit/explicit parsing and formatting seamlessly when working with APIs.
  • Consistency: ensures a single, robust email parsing logic across all projects.

Examples

Create and validate email addresses

// Implicit conversion from string
EmailAddress email = "john.doe@example.com";

// Access parts
Console.WriteLine(email.UserName); // "john.doe"
Console.WriteLine(email.Domain);   // "example.com"

// Validation
bool valid = EmailAddress.IsValid("test@domain.com"); // true
bool invalid = EmailAddress.IsValid("not-an-email");  // false

Parsing

var email = EmailAddress.Parse("alice@company.org");
Console.WriteLine(email); // "alice@company.org"

if (EmailAddress.TryParse("bob@company.org", out var parsed))
{
    Console.WriteLine(parsed.Domain); // "company.org"
}

Comparisons

var a = (EmailAddress)"alice@company.com";
var b = (EmailAddress)"bob@company.com";

Console.WriteLine(a == b);  // false
Console.WriteLine(a != b);  // true
Console.WriteLine(a < b);   // true, alphabetic order

var list = new List<EmailAddress> { b, a };
list.Sort(); // Sorted alphabetically

Links