* message inside another (OPTIONAL; caller
* should ONLY specify a value for this
* when the message being sent is a reply)
- * @param mixed $extra Any implementation-specific variables
- * can be passed in here and used in
- * an overloaded version of this method
- * if needed.
* @param resource $imap_stream If there is an open IMAP stream in
* the caller's context, it should be
* passed in here. This is OPTIONAL,
* stream is only used when $reply_id
* is also non-zero, but that is subject
* to change.
+ * @param mixed $extra Any implementation-specific variables
+ * can be passed in here and used in
+ * an overloaded version of this method
+ * if needed.
*
* @return integer The number of bytes written (or that would have been
* written) to the output stream.
*
*/
function mail(&$message, $stream=false, $reply_id=0, $reply_ent_id=0,
- $extra=NULL, $imap_stream=NULL) {
+ $imap_stream=NULL, $extra=NULL) {
$rfc822_header = &$message->rfc822_header;
} else {
// use default received headers
$header[] = "Received: from $received_from" . $rn;
- if ($edit_identity || ! isset($hide_auth_header) || ! $hide_auth_header)
+ if (!isset($hide_auth_header) || !$hide_auth_header)
$header[] = " (SquirrelMail authenticated user $username)" . $rn;
$header[] = " by $SERVER_NAME with HTTP;" . $rn;
$header[] = " $date" . $rn;
* @return string $result with timezone and offset
*/
function timezone () {
- global $invert_time;
+ global $invert_time, $show_timezone_name;
$diff_second = date('Z');
if ($invert_time) {
$diff_second = abs($diff_second);
$diff_hour = floor ($diff_second / 3600);
$diff_minute = floor (($diff_second-3600*$diff_hour) / 60);
- $zonename = '('.strftime('%Z').')';
- $result = sprintf ("%s%02d%02d %s", $sign, $diff_hour, $diff_minute,
- $zonename);
+
+ // If an administrator wants to add the timezone name to the
+ // end of the date header, they can set $show_timezone_name
+ // to boolean TRUE in config/config_local.php, but that is
+ // NOT RFC-822 compliant (see section 5.1). Moreover, some
+ // Windows users reported that strftime('%Z') was returning
+ // the full zone name (not the abbreviation) which in some
+ // cases included 8-bit characters (not allowed as is in headers).
+ // The PHP manual actually does NOT promise what %Z will return
+ // for strftime!: "The time zone offset/abbreviation option NOT
+ // given by %z (depends on operating system)"
+ //
+ if ($show_timezone_name) {
+ $zonename = '('.strftime('%Z').')';
+ $result = sprintf ("%s%02d%02d %s", $sign, $diff_hour, $diff_minute, $zonename);
+ } else {
+ $result = sprintf ("%s%02d%02d", $sign, $diff_hour, $diff_minute);
+ }
return ($result);
}