Comments (3)
Are these not parsing properly because they don't meet the RFC 5322 standard?
I believe this is correct. The name before angle brackets is produced by an atom
rule, and the comma cannot appear in an atom
.
atom = [CFWS] 1*atext [CFWS]
specials = "(" / ")" / ; Special characters that do
"<" / ">" / ; not appear in atext
"[" / "]" /
":" / ";" /
"@" / "\" /
"," / "." /
DQUOTE
Note: The "specials" token does not appear anywhere else in this
specification. It is simply the visible (i.e., non-control, non-
white space) characters that do not appear in atext. It is
provided only because it is useful for implementers who use tools
that lexically analyze messages. Each of the characters in
specials can be used to indicate a tokenization point in lexical
analysis.
That said, if you knew for certainty that you were parsing a single address (where a comma should not appear as a tokenization point), you could escape the comma with a unique string and then unescape in the resulting output without too much difficulty.
from email-addresses.
hlian is right, but I'd also say "or they have to be quoted". The "display name" portion of an email address can be made up of words, which can only contain commas if they are quoted strings. So iZotope, Inc. <[email protected]>
doesn't parse but "iZotope, Inc." <[email protected]>
does.
It may be the assumption of the data (against the RFC) that since this is a single email address, it can drop the quotes. There's many imaginable hacks to get around that. For instance, if the email doesn't have a quote in it, but does have an angle bracket, start with a quote and replace '<' with '"<'. Unfortunate.
from email-addresses.
Thanks for the responses. An app using the library can definitely take some of the scrubbing/cleanup actions you're describing before parsing, but it'd be great if the lib had something like a standardize(address)
or something similar that could either be called before attempting to parse or automatically included as part of the parse.
There's a certain elegance to this library that I can pass reasonably sensible headers to it and it just works, but having to precondition all of the data makes that feel a little kludgy.
This is all nit-picking, though... thanks for the responses! :-)
from email-addresses.
Related Issues (20)
- Simple option doesn't seem to work HOT 1
- Doesn't appear to distinguish extended mailboxes HOT 5
- Line feed in address string will return null HOT 1
- Space should be disallowed or at least treated consistently HOT 1
- Allow semicolon separator HOT 2
- Release v3.0.2? HOT 2
- Parser fails when quoted string includes dquotes and comma HOT 1
- How should I detect ParsedGroup? HOT 5
- .git HOT 5
- support ES module importing HOT 2
- `parseOneAddress` sometimes returns `null` HOT 1
- `isValid` method? HOT 4
- Bracketing not supported HOT 2
- Should '[email protected]' (apostrophes included!) be a valid email address? HOT 2
- REQUEST: Could the parser get the ".com" or ".net" part of the email in an isolated part property/field name? HOT 2
- latest version with addressListSeparator not available on npm/yarn ? HOT 1
- Feature Request: Include the parsed value in the returned objects HOT 1
- Question: What do you use to generate the minified code?
- When name has colon in it, it fails to parse
- fails to parse if the name is an email address HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from email-addresses.