Last modified: 2011-02-05 22:12:32 UTC
If the date.timezone environment variable is not set in php.ini then when
sending a confirmation email, the following error can be generated: "Could not
send confirmation mail. Check address for invalid characters." The email message
is still sent.
This is because the php mail() fuction will return a warning when the
date.timezone environment variable is not set. The UserMailer Function in
UserMailer.php returns this non-empty warning string. In User.php the function
sendMail incorrectly interprets this non-empty string as a failure. This then
propagates up to the function sendConfirmationMail in User.php and finally back
to function showRequestForm in SpecialConfirmemail.php, where the message
confirmemail_sendfailed or "Could not send confirmation mail. Check address for
invalid characters." is displayed.
Change the mailing code to recognize this warning and display an appropriate
warning. Add a check to the configuration code (config/index.php) to check for
the existence of the date.timezone environment variable.
Since PHP requires the timezone to be set now, this should be considered fixed.