Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
Nightly Builds
-
None
-
None
-
Operating System: other
Platform: Other
-
36536
Description
The InternetAddress.validate() method is the only version 1.3 feature of
JavaMail used in commons-email. Removing its use means that commons-email will
compile (and tests run) against JavaMail 1.2
This ticket is as a result of this thread on the user list:
http://www.mail-archive.com/commons-user%40jakarta.apache.org/msg12817.html
However some of the assertions I made there were incorrect.
JavaMail 1.3 introduced the facility to specify a strict=false setting when
parsing an InternetAddress and a new validate() method to check whether
a "loosley parsed" InternetAddress was valid.
I made a mistake in that thread. The Email class uses the following
constructors:
InternetAdress(String address, String personal)
InternetAdress(String address, String personal, String charset)
These constructors assume the "address" is a valid RFC822 internet address and
don't "validate" them. Therefore Email as its currently coded is correct to
then call the validate() method.
However the following constructor does validate...
InternetAdress(String address)
... and I'm attaching a patch which removes the need to use the validate()
method.
However its not quite that simple. Since the validate() method in JavaMail 1.3
isn't "as strict" as the above constructor - which is compatible with JavaMail
1.2 - it doesn't validate addresses which contain quotes or '[' at all.
Therefore applying the patch will make it 1.2 compatible, but also make the
validation stricter.