Eerste commit
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
namespace MijnBesluit.Application.Models;
|
||||
|
||||
/// <summary>
|
||||
/// Maakt het <c>Message-ID</c> 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
|
||||
/// <c>550-5.7.1 Messages missing a valid Message-ID header are not accepted</c> - 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.
|
||||
/// </summary>
|
||||
public static class Berichtkenmerk
|
||||
{
|
||||
/// <summary>Maakt een nieuw Message-ID op basis van het afzenderadres.</summary>
|
||||
public static string Nieuw(string? afzenderAdres)
|
||||
{
|
||||
var domein = Domein(afzenderAdres);
|
||||
return $"<{Guid.NewGuid():N}.{DateTime.UtcNow:yyyyMMddHHmmss}@{domein}>";
|
||||
}
|
||||
|
||||
/// <summary>Het deel achter het apenstaartje, of een vervanger als het adres niet deugt.</summary>
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user