name-addr = [display-name] angle-addr
display-name = phrase
phrase = 1*word / obs-phrase
obs-phrase = word *(word / "." / CFWS)
word = atom / quoted-string
atom = [CFWS] 1*atext [CFWS]
atext = # One of A-Z, a-z, 0-9, or "!#$%&'*+-/=?^_`{|}~".
Given atext doesn't include a `.', the one or more words that make up
phrase can't be `Dr. Seuss', or `foo.bar'. But they are allowed by
obs-phrase as long as they're not at the beginning. So those two
examples are both parsed as obs-phrase with `.' being the middle token.
Oh-ho! I've been out-RFC lawyered! Yeah, it seems like that is completely
valid; I missed that subtlty regarding obs-phrase.
Ken, what's the parsing difficulty? 4.1 hints at it. Does nmh have
extra difficulty because it takes email address without a `@' and domain
part? I'm struggling to come up with examples, perhaps because I'm
allowing too much look ahead, e.g. `a b c d e . f' takes a few atoms
before you know if it's a phrase or an obs-phrase.
It's just .... ugh. Have you looked at the address parser? I hate going
in there. But it seems we're clearly in the wrong and we need to fix it.
I mean, yeah, we should fix it anyway because literally every other frickin'
MUA on the planet handles it even if it's wrong, but this is added fuel
to the fire.
--Ken
_______________________________________________
Nmh-workers mailing list
Nmh-workers(_at_)nongnu(_dot_)org
https://lists.nongnu.org/mailman/listinfo/nmh-workers