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.
You can install the package from NuGet:
dotnet add package PosInformatique.Foundations.EmailAddresses- 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
IFormattableandIParsable<T>for seamless integration with .NET APIs - Implicit conversion between
stringandEmailAddress
- 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.
// 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"); // falsevar 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"
}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