But going with the number of fields: 1 is probably under-engineering it, 2 is probably enough, 3 would be a stretch. 4 or more is probably over engineering the problem (unless you specifically have a requirement for this).
This situation arises when you know you want to travel after giving birth, and you want to book the tickets in advanced to take advantage of lower prices. Most airlines won't let you book a ticket without a name, nor do they let you edit names.
The situation is also relevant in hospitals where babies are born, in Finland they literally put girl <surname> / boy <surname> into the system as the first / lastname. It's quite funny that a place literally designed to handle new humans, does not have a way to handle that.
https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-...
If you ask someone their name, a single field copes with a range of different name shapes.
If you want to address them in an email with "just first name", what you're really asking for is a preferred name to be greeted by, and that should be an entirely different single field.
By splitting or having "firstname/lastname" fields you're making the classic mistake about names.
Ask in the sign-up or user preferences their preferred way to be greeted in an email. If the user wants their marking emails to start "Dear shithead" then free them up to do that. You could try splitting the "full name" field to pre-fill a suggested name by which to be greeted.