namespace MijnBesluit.Application.Models; /// /// Maakt het Message-ID van een uitgaande e-mail. /// /// Waarom dit er is: .NET zet zelf geen Message-ID op een bericht. Veel mailservers vullen die /// dan aan, maar niet allemaal. Gmail weigert sinds kort alles zonder geldige Message-ID met /// 550-5.7.1 Messages missing a valid Message-ID header are not accepted - en dan komt er /// dus geen enkele inlogcode aan bij iemand met een gmail-adres. /// /// De vorm is die uit RFC 5322: iets unieks, een apenstaartje, en een domein dat van jou is. /// public static class Berichtkenmerk { /// Maakt een nieuw Message-ID op basis van het afzenderadres. public static string Nieuw(string? afzenderAdres) { var domein = Domein(afzenderAdres); return $"<{Guid.NewGuid():N}.{DateTime.UtcNow:yyyyMMddHHmmss}@{domein}>"; } /// Het deel achter het apenstaartje, of een vervanger als het adres niet deugt. public static string Domein(string? adres) { if (string.IsNullOrWhiteSpace(adres)) return "mijnbesluit.nl"; var apenstaartje = adres.LastIndexOf('@'); if (apenstaartje < 0 || apenstaartje == adres.Length - 1) return "mijnbesluit.nl"; var domein = adres[(apenstaartje + 1)..].Trim().Trim('>').ToLowerInvariant(); return string.IsNullOrWhiteSpace(domein) ? "mijnbesluit.nl" : domein; } }