MailAddress выполняет валидацию для последовательных точек

Начиная с .NET 10, MailAddress класс применяет более строгую проверку адресов электронной почты. Адреса электронной почты с последовательными точками в локальной части (например, test..address@example.com) или доменной части (например, address@test..example.com) теперь считаются недопустимыми. Это изменение соответствует поведению формата адреса электронной почты, заданного MailAddress в RFC 5322 и RFC 2822.

Представленная версия

.NET 10 (предварительная версия 1)

Предыдущее поведение

MailAddress Ранее класс разрешил адреса электронной почты с последовательными точками в локальных или доменных частях, даже если такие адреса недопустимы в соответствии со спецификацией адреса электронной почты.

Например, следующий код выполняется без исключения:

using System.Net.Mail;

var email = new MailAddress("test..address@example.com");
Console.WriteLine(email.Address); // Output: test..address@example.com

Новое поведение

Начиная с .NET 10, MailAddress класс применяет более строгую проверку и создает FormatException исключение при анализе адреса электронной почты с последовательными точками в локальных или доменных частях.

Например, следующий код теперь вызывает FormatExceptionисключение:

using System.Net.Mail;

var email = new MailAddress("test..address@example.com"); // Throws FormatException

Сообщение об исключении указывает, что адрес электронной почты недопустим.

Тип разрушающего изменения

Это изменение поведения.

Причина изменения

Это изменение гарантирует соответствие формату адреса электронной почты, указанному в RFC 5322 и RFC 2822. Согласно этим стандартам, адреса электронной почты с последовательными точками в локальных или доменных частях недопустимы. Предыдущее поведение разрешения таких адресов было неверным и может привести к непредвиденным проблемам в приложениях, использующих MailAddress проверку электронной почты.

Если приложение использует MailAddress класс для анализа адресов электронной почты, просмотрите код, чтобы убедиться, что он не передает адреса электронной почты с последовательными точками в локальных или доменных частях. При обнаружении таких адресов обновите приложение для обработки вызываемого FormatException адреса.

Например, можно использовать try-catch блок для обработки недопустимых адресов электронной почты:

using System;
using System.Net.Mail;

try
{
    var email = new MailAddress("test..address@example.com");
}
catch (FormatException ex)
{
    Console.WriteLine($"Invalid email address: {ex.Message}");
}

Кроме того, можно проверить адреса электронной почты с помощью регулярного выражения перед передачей их конструктору MailAddress .

Затронутые API

См. также