improve of messageuid detection, when appending messages, as sometimes (when server only replies OK/True on appending Messages to a mailbox) you cannot trust the nextuid iformation by folderstatus (at least not with dbmail)

This commit is contained in:
Klaus Leithoff 2011-02-07 16:17:08 +00:00
parent 2105bb4d2d
commit 161e29bb0f
2 changed files with 20 additions and 8 deletions

View File

@ -282,6 +282,15 @@
if (self::$debug) error_log("Could not append Message:".print_r($messageid->message,true));
return false;
}
if ($messageid === true) // try to figure out the message uid
{
$list = $this->getHeaders($_folderName, $_startMessage=1, $_numberOfMessages=1, $_sort=0, $_reverse=true, $_filter=array());
if ($list)
{
if (self::$debug) error_log(__METHOD__.__LINE__.' MessageUid:'.$messageid.' but found:'.array2string($list));
$messageid = $list['header'][0]['uid'];
}
}
return $messageid;
}
@ -2475,13 +2484,13 @@
static function getFileNameFromStructure(&$structure)
{
if(isset($structure->parameters['NAME'])) {
return self::decode_header($structure->parameters['NAME']);
return rawurldecode(self::decode_header($structure->parameters['NAME']));
} elseif(isset($structure->dparameters['FILENAME'])) {
return self::decode_header($structure->dparameters['FILENAME']);
return rawurldecode(self::decode_header($structure->dparameters['FILENAME']));
} elseif(isset($structure->dparameters['FILENAME*'])) {
return self::decode_header($structure->dparameters['FILENAME*']);
return rawurldecode(self::decode_header($structure->dparameters['FILENAME*']));
} elseif ( isset($structure->filename) && !empty($structure->filename) && $structure->filename != 'NIL') {
return self::decode_header($structure->filename);
return rawurldecode(self::decode_header($structure->filename));
} else {
return lang("unknown").($structure->subType ? ".".$structure->subType : "");
}

View File

@ -143,10 +143,13 @@
unset($_GET['composeid']);
$uicompose = CreateObject('felamimail.uicompose');
$messageUid = ($messageUid===true ? $uidNext : $messageUid);
if ($this->bofelamimail->getMessageHeader($messageUid))
{
//error_log(__METHOD__.__LINE__.' (re)open drafted message with new UID: '.$messageUid.' in folder:'.$folder);
$uicompose->bocompose->getDraftData($uicompose->bofelamimail->icServer, $folder, $messageUid);
$uicompose->compose();
return;
}
} else {
if(!$this->bocompose->send($formData)) {
print "<script type=\"text/javascript\">alert('".lang("Error: Could not send Message.")." ".lang("Trying to recover from session data")."');</script>";