mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-18 20:51:23 +01:00
handle message/rfc822 attachments as display when opened from drafted message; properly restore message/rfc822 attachments stored with .eml files
This commit is contained in:
parent
596d81bb2c
commit
719ede5829
@ -6023,7 +6023,7 @@ class emailadmin_imapbase
|
||||
* parseRawMessageIntoMailObject - parses a message/rfc mail from file to the mailobject and returns the header and body via reference
|
||||
* throws egw_exception_assertion_failed when the required Pear Class is not found/loadable
|
||||
* @param object $mailObject instance of the SMTP Mailer Object
|
||||
* @param string $message string containing the RawMessage
|
||||
* @param mixed string/object $message string containing the RawMessage / object Mail_mimeDecoded message (part))
|
||||
* @param string &$Header reference used to return the imported Mailheader
|
||||
* @param string &$Body reference to return the imported Body
|
||||
* @return void Mailheader and body is returned via Reference in $Header $Body
|
||||
@ -6038,8 +6038,15 @@ class emailadmin_imapbase
|
||||
//echo '<pre>'.$message.'</pre>';
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.$message);
|
||||
if (class_exists('Mail_mimeDecode',false)==false && (@include_once 'Mail/mimeDecode.php') === false) throw new egw_exception_assertion_failed(lang('Required PEAR class Mail/mimeDecode.php not found.'));
|
||||
if (is_string($message))
|
||||
{
|
||||
$mailDecode = new Mail_mimeDecode($message);
|
||||
$structure = $mailDecode->decode(array('include_bodies'=>true,'decode_bodies'=>true,'decode_headers'=>true));
|
||||
}
|
||||
if (is_object($message))
|
||||
{
|
||||
$structure = $message;
|
||||
}
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.array2string($structure));
|
||||
//_debug_array($structure);
|
||||
//exit;
|
||||
@ -6272,8 +6279,8 @@ class emailadmin_imapbase
|
||||
//error_log( __METHOD__.' ('.__LINE__.') '." Recursion to fetch subparts:".$part->ctype_primary.'/'.$part->ctype_secondary);
|
||||
$this->createBodyFromStructure($mailObject, $part, $parenttype=null, $decode);
|
||||
}
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.$structure->ctype_primary.'/'.$structure->ctype_secondary.' => '.$part->ctype_primary.'/'.$part->ctype_secondary.' Part:'.array2string($part));
|
||||
if ($part->body && ((strtolower($structure->ctype_secondary)=='mixed' && strtolower($part->ctype_primary)!='multipart') ||
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.$structure->ctype_primary.'/'.$structure->ctype_secondary.' => '.$part->ctype_primary.'/'.$part->ctype_secondary.' Part:'.array2string($part->body));
|
||||
if (($part->body||strtolower($part->ctype_primary.'/'.$part->ctype_secondary)=="message/rfc822") && ((strtolower($structure->ctype_secondary)=='mixed' && strtolower($part->ctype_primary)!='multipart') ||
|
||||
trim(strtolower($part->disposition)) == 'attachment' ||
|
||||
trim(strtolower($part->disposition)) == 'inline' ||
|
||||
isset($part->headers['content-id'])))
|
||||
@ -6347,7 +6354,20 @@ class emailadmin_imapbase
|
||||
}
|
||||
else
|
||||
{
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.' Add String '.($part->disposition=='attachment'?'Attachment':'Part').' of type:'.$part->ctype_primary.'/'.$part->ctype_secondary);
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.' Add String '.($part->disposition=='attachment'?'Attachment':'Part').' of type:'.$part->ctype_primary.'/'.$part->ctype_secondary.array2string($part->parts));
|
||||
if (strtolower($part->ctype_primary.'/'.$part->ctype_secondary)=="message/rfc822")
|
||||
{
|
||||
$localMailObject = new egw_mailer();
|
||||
$this->parseRawMessageIntoMailObject($localMailObject,$part->parts[0],$_Header,$_Body);
|
||||
//error_log(__METHOD__.__LINE__.$_Header.$localMailObject->LE.$localMailObject->LE.$_Body);
|
||||
$mailObject->AddStringAttachment($_Header.$localMailObject->LE.$localMailObject->LE.$_Body,
|
||||
$filename,
|
||||
($part->headers['content-transfer-encoding']?$part->headers['content-transfer-encoding']:'base64'),
|
||||
$part->ctype_primary.'/'.$part->ctype_secondary
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mailObject->AddStringAttachment($part->body, //($part->headers['content-transfer-encoding']?base64_decode($part->body):$part->body),
|
||||
$filename,
|
||||
($part->headers['content-transfer-encoding']?$part->headers['content-transfer-encoding']:'base64'),
|
||||
@ -6355,6 +6375,7 @@ class emailadmin_imapbase
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!(trim(strtolower($part->disposition))=='attachment' || trim(strtolower($part->disposition)) == 'inline' || isset($part->headers['content-id'])) && $partFetched==false)
|
||||
{
|
||||
//error_log(__METHOD__.' ('.__LINE__.') '.' Add String '.($part->disposition=='attachment'?'Attachment':'Part').' of type:'.$part->ctype_primary.'/'.$part->ctype_secondary.' Body:'.$part->body);
|
||||
|
@ -455,10 +455,10 @@ class mail_ui
|
||||
//$content[self::$nm_index]['path'] = self::get_home_dir();
|
||||
}
|
||||
}
|
||||
else if ($content['mailPreview']['mailPreviewHeadersAttachments']['previewAttachmentArea'][0]['save_zip'])
|
||||
{
|
||||
$this->download_zip(current($content[self::$nm_index]['selected']));
|
||||
}
|
||||
// else if ($content['mailPreview']['mailPreviewHeadersAttachments']['previewAttachmentArea'][0]['save_zip'])
|
||||
// {
|
||||
// $this->download_zip(current($content[self::$nm_index]['selected']));
|
||||
// }
|
||||
//$content[self::$nm_index]['default_cols'] = 'status,attachments,subject,'.($toSchema?'toaddress':'fromaddress').',date,size'; // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
|
||||
$content[self::$nm_index]['default_cols'] = 'status,attachments,subject,address,date,size'; // I columns to use if there's no user or default pref (! as first char uses all but the named columns), default all columns
|
||||
$content[self::$nm_index]['csv_fields'] = false;
|
||||
@ -2100,10 +2100,10 @@ class mail_ui
|
||||
$rowID = $_requesteddata['id'];
|
||||
//unset($_REQUEST);
|
||||
}
|
||||
if($_requesteddata['mail_displayattachments'][0]['save_zip'])
|
||||
{
|
||||
$this->download_zip($_requesteddata['mail_id']);
|
||||
}
|
||||
// if($_requesteddata['mail_displayattachments'][0]['save_zip'])
|
||||
// {
|
||||
// $this->download_zip($_requesteddata['mail_id']);
|
||||
// }
|
||||
$preventRedirect=false;
|
||||
if(isset($_GET['id'])) $rowID = $_GET['id'];
|
||||
if(isset($_GET['part'])) $partID = $_GET['part'];
|
||||
@ -2279,6 +2279,7 @@ class mail_ui
|
||||
$linkData = array
|
||||
(
|
||||
'menuaction' => 'mail.mail_ui.displayMessage',
|
||||
//'mode' => 'display', //message/rfc822 attachments should be opened in display mode
|
||||
'id' => $rowID,
|
||||
'part' => $value['partID'],
|
||||
'is_winmail' => $value['is_winmail']
|
||||
|
@ -2012,6 +2012,7 @@ app.classes.mail = AppJS.extend(
|
||||
{
|
||||
case 'MESSAGE/RFC822':
|
||||
url += 'menuaction=mail.mail_ui.displayMessage'; // todo compose for Draft folder
|
||||
url += '&mode=display';//message/rfc822 attachments should be opened in display mode
|
||||
url += '&id='+mailid;
|
||||
url += '&part='+attgrid.partID;
|
||||
url += '&is_winmail='+attgrid.winmailFlag;
|
||||
|
Loading…
Reference in New Issue
Block a user