Browse Source

Use INTERNALDATE if Date: header is missing; convert some spaces back to tabs

release-0.6
thomascube 18 years ago
parent
commit
a9a8ef2b5c
  1. 55
      program/lib/imap.inc

55
program/lib/imap.inc

@ -1650,54 +1650,6 @@ function iil_C_FetchHeaders(&$conn, $mailbox, $message_set, $uidfetch=false)
} else {
$a = explode(' ', $line);
}
if (!isset($result[$id]->date)) {
$result[$id]->date = '';
}
$result[$id]->date = trim($result[$id]->date);
$before = true;
if ($result[$id]->date == '') {
$before = false;
/* FETCH RECEIVED header */
$key = 'fh' . ($c++);
$request = $key;
$request .= " UID FETCH $id (BODY.PEEK[HEADER.FIELDS ";
$request .= "(RECEIVED)])\r\n";
if (fputs($fp, $request)) {
$_received = '';
while ($line = chop(iil_ReadLine($fp, 200))) {
$line = trim($line);
if (preg_match('/for <(.*)>;(.*)/', $line)) {
$_received .= trim($line);
break;
}
}
if ($_received != '') {
$_received = trim(str_replace(';', '',
substr($_received, strpos($_received, ';')) ));
if ($_received != '') {
$result[$id]->date = $_received;
$result[$id]->timestamp = iil_StrToTime($_received);
//trigger_error("Date: {$result[$id]->timestamp}", E_USER_WARNING);
}
}
$result[$id]->date = trim($result[$id]->date);
}
/**
* This is hack to display something.
*/
if ($result[$id]->date == '') {
$result[$id]->date = date('r');
$result[$id]->timestamp = time();
}
}
trigger_error("set before? {$before}, ID {$id}: {$result[$id]->date} / {$result[$id]->timestamp}", E_USER_WARNING);
}
} while (strcmp($a[0], $key) != 0);
@ -1706,14 +1658,14 @@ function iil_C_FetchHeaders(&$conn, $mailbox, $message_set, $uidfetch=false)
Sample reply line: "* 3 FETCH (UID 2417 RFC822.SIZE 2730 FLAGS (\Seen \Deleted))"
*/
$command_key = 'fh' . ($c++);
$request = $command_key . $prefix;
$request .= " FETCH $message_set (UID RFC822.SIZE FLAGS INTERNALDATE)\r\n";
if (!fputs($fp, $request)) {
return false;
}
do {
$line=chop(iil_ReadLine($fp, 200));
$line = chop(iil_ReadLine($fp, 200));
//$a = explode(' ', $line);
//if (($line[0]=="*") && ($a[2]=="FETCH")) {
if ($line[0] == '*') {
@ -1784,13 +1736,14 @@ function iil_C_FetchHeaders(&$conn, $mailbox, $message_set, $uidfetch=false)
}
$result[$id]->internaldate = $time_str;
if ($IMAP_USE_INTERNAL_DATE) {
if ($IMAP_USE_INTERNAL_DATE || empty($result[$id]->date)) {
//calculate timestamp
$timestamp = strtotime($time_str); //return's server's time
$na_timestamp = $timestamp;
$timestamp -= $time_zone * 3600; //compensate for tz, get GMT
$result[$id]->timestamp = $timestamp;
$result[$id]->date = $time_str;
}
if ($conn->do_cache) {

Loading…
Cancel
Save