fcl-md: func IsValidEmail is too weak
markdown.utils.pas
```
function IsValidEmail(const S : String) : boolean;
type
TState = (sNeutral,sUser,sHost,sDomain);
var
lState : TState;
c : char;
begin
Result:=False;
if s.CountChar('@') <> 1 then
Exit;
lState:=sNeutral;
for c in s do
Case lState of
sNeutral:
if c='@' then
Exit
else
lState:=sUser;
sUser:
if c='@' then
lState:=sHost;
else
if c='.' then
lState:=sDomain
else if c='+' then
Exit;
end;
Result:=lState=sDomain;
end;
```
1. func detects empty username and returns False. but it don't detect empty hostname nor empty domain. these return True:
```
IsValidEmail('a@.a')
IsValidEmail('a@a.')
```
2. domain-name must have at least 2 wordchars. currently, I repeat, minimal count is 0.
3. need to detect that hostname/domain have only wordchars, not any chars.
4. for username - some punctuations are allowed too. this must be checked. supported char-set for username can be asked from good AI.
note: pls don't use RegEx for this func if you work on it, it will by slower by 1-2 orders.
issue