In respect of handling email addresses provided by customers (note I do not use what I consider has become almost a derogatory term "users") the U.K. Government Digital Service (GDS) guidelines on interface/experience design and implementation patterns is widely seen as the gold standard[3]. Here's what they have to say about accepting email addresses[0] including code examples:
When asking users for their email address, you must:
make it clear why you’re asking
make sure the field works for all of your users
help users to enter a valid email address
You may also need to check that users have access to the email account they give you.
and here [1] is the github issue tracker for discussing email address patterns accepted by government services.
In respect of people without both first and last names, I resemble those remarks! I've dealt with broken computer systems since the 1990s that assume first+last (or even first+middle+last !), or set an arbitrary minimum length, and break when meeting me ("Tj") !
Worst cases for this are web services that set arbitrary rules for the name on a credit card (which can be almost anything by the rules and guidelines and should be free-form) - I had this only yesterday with onlyfans.com not accepting my name as it appears on the card because their rules impose first " " last format.
The double-abuse of the customer then comes when the first-line support, when told precisely what the problem is, and "please let your web-devs know", gets the response "Use a different card". Turned out that onlyfans.com (or their provider) don't even ensure the name matches when actually doing the authorisation since I put something random in for first-name and it was authorised.
I've discussed this in detail with my various bank's technical teams over the years and they've confirmed it usually isn't their side doing a DECLINE; it's the requesting service applying overly-strict arbitrary rules before deciding to make the authorisation request.
Again, GDS has recommendations (and consider this is for government services) for accepting names in free-form, not split into fields[2]. and says this:
Use single or multiple fields depending on your user’s needs. Not everyone’s name fits the first-name, last-name format. Using multiple name fields mean there’s more risk that a person’s name will not fit the format you’ve chosen and that it is entered incorrectly.
In my case in the U.K. the passport office telephoned me once, for my first digital passport in the 1990s, asking rather apologetically if I'd mind them putting X's in the first name since their computer system couldn't cope with it being empty. Whereas the U.K. Driver and Vehicle Licencing Agency (DVLA) has no problem at all and shows my legal name correctly on my driving licence.
Two annoying exceptions (not strictly government created/operated) are the internal (local) NHS registration system and some local authority (local council) electoral role (voter registration) systems that do it badly - usually due to having bought in an external 'enterprise' application to handle it, or trying to interface many disparate systems.
Generally, over the last 25+ years, I've found government organisations are great at handling these corner cases but random private sector / out-sourced development is worst.
Getting traction to get things fixed is the hardest part - being treated as dumb (usually by first-line support and their 'managers') when I set out a clear case and rationale for the bug and how to fix it has to be amongst my least favourite voluntary community-spirited endeavours. The short-cut I apply there, now, is a an email CC-ed to the organisation head (chair, CEO) and senior legal person.
There is an up-side to it though - I rarely if ever suffer any kind of spam or phishing and anyone trying identity theft will have to have much more determination than me to overcome all the obstacles :P
[0] https://design-system.service.gov.uk/patterns/email-addresse...
[1] https://github.com/alphagov/govuk-design-system-backlog/issu...
[2] https://design-system.service.gov.uk/patterns/names/
[3] https://design-system.service.gov.uk/patterns/