R. David Murray <[email protected]> added the comment:
It does appear as though parseaddr is dropping quoting information from the
returned parsed address. Fixing this is likely to create backward
compatibility issues, and I'm very curious to know why parseaddr drops the
quoting info.
Note that I do not observe the change from test\com to test.com, so I'm
assuming that was a typo and ignoring that part (or it represents a bug that is
already fixed).
The "weird" example is actually consistent with the rest of parseaddr's
behavior, if you understand that behavior as turning quoted pairs inside quoted
strings into their literal value, but leaving the quotes around the quoted
string(s) in place.
Consider the example:
parseaddr('"\\\\"test\\\\" test"@test.com')
If we remove the Python quoting from this input string we have:
"\\"test\\" test"@test.com
Interpreting this according to RFC rules we have a quoted string "\\"
containing a quoted pair (\\). The quoted pair resolves to a single \. Then
we have the unquoted text
test\\
This parseaddr copies literally (I'm not sure if that is strictly RFC
compliant, but given that we are supposed to be liberal in what we except it is
as reasonable a thing to do as any.) Finally we have another quoted string
" test"
So putting those pieces together according to the rules above, we end up with:
"\"test\\" test"@test.com
which is the observed output once you remove the Python quoting. So, parseaddr
is working as designed. The question is, what is the design decision behind
resolving the quoted pairs but leaving the quotes?
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue1050268>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com