diff --git a/infolog/inc/class.infolog_ui.inc.php b/infolog/inc/class.infolog_ui.inc.php index 2784470fe5..e88b3c112b 100644 --- a/infolog/inc/class.infolog_ui.inc.php +++ b/infolog/inc/class.infolog_ui.inc.php @@ -1375,17 +1375,35 @@ class infolog_ui if (is_array($_attachments)) { + //_debug_array($_attachments); foreach ($_attachments as $attachment) { - $attachments[] = array( - 'name' => $attachment['name'], - 'mimeType' => $attachment['type'], - 'tmp_name' => $attachment['file'], - 'size' => $attachment['size'], - ); + if ($attachment['type'] == 'MESSAGE/RFC822') + { + $bofelamimail =& CreateObject('felamimail.bofelamimail',$GLOBALS['egw']->translation->charset()); + $bopreferences =& CreateObject('felamimail.bopreferences'); + $bofelamimail->openConnection(); + $bofelamimail->reopen($attachment['folder']); + + $mailcontent = self::get_mailcontent(&$bofelamimail,$attachment['uid'],$attachment['partID'],$attachment['folder']); + //_debug_array($mailcontent['attachments']); + foreach($mailcontent['attachments'] as $tmpattach => $tmpval) + { + $attachments[] = $tmpval; + } + } + else + { + $attachments[] = array( + 'name' => $attachment['name'], + 'mimeType' => $attachment['type'], + 'tmp_name' => $attachment['file'], + 'size' => $attachment['size'], + ); + } } } - + //_debug_array($attachments); $body = strip_tags($_body); $this->edit($this->bo->import_mail( implode(',',$_to_emailAddress),$_subject,$body,$attachments,'' @@ -1399,6 +1417,28 @@ class infolog_ui $bofelamimail->openConnection(); $bofelamimail->reopen($mailbox); + $mailcontent = self::get_mailcontent(&$bofelamimail,$uid,$partid,$mailbox); + + return $this->edit($this->bo->import_mail( + $mailcontent['mailaddress'], + $mailcontent['subject'], + $mailcontent['message'], + $mailcontent['attachments'], + strtotime($mailcontent['headers']['DATE']) + )); + } + $GLOBALS['egw']->common->egw_header(); + echo ""; + $GLOBALS['egw']->common->egw_exit(); + exit; + } + + /** + * fetches the actual mailcontent + */ + static function get_mailcontent(&$bofelamimail,$uid,$partid='',$mailbox='') + { + //echo __METHOD__." called for $uid,$partid
"; $headers = $bofelamimail->getMessageHeader($uid,$partid); // dont force retrieval of the textpart, let felamimail preferences decide $bodyParts = $bofelamimail->getMessageBody($uid,'',$partid); @@ -1436,35 +1476,72 @@ class infolog_ui $message .= $bofelamimail->wordwrap($value,75,"\n"); } } - + //_debug_array($attachments); if (is_array($attachments)) { foreach ($attachments as $num => $attachment) { - $attachments[$num] = array_merge($attachments[$num],$bofelamimail->getAttachment($uid, $attachment['partID'])); - if (isset($attachments[$num]['charset'])) { - $GLOBALS['egw']->translation->convert($attachments[$num]['attachment'],$attachments[$num]['charset']); + if ($attachment['mimeType'] == 'MESSAGE/RFC822') + { + //_debug_array($bofelamimail->getMessageHeader($uid, $attachment['partID'])); + //_debug_array($bofelamimail->getMessageBody($uid,'', $attachment['partID'])); + //_debug_array($bofelamimail->getMessageAttachments($uid, $attachment['partID'])); + $mailcontent = self::get_mailcontent(&$bofelamimail,$uid,$attachment['partID']); + $headdata =''; + if ($mailcontent['headers']) + { + if ($mailcontent['headers']['SUBJECT']) $headdata = lang('subject').': '.$mailcontent['headers']['SUBJECT']."\n"; + if ($mailcontent['headers']['FROM']) $headdata .= lang('from').': '.$mailcontent['headers']['FROM']."\n"; + if ($mailcontent['headers']['SENDER']) $headdata .= lang('sender').': '.$mailcontent['headers']['SENDER']."\n"; + if ($mailcontent['headers']['TO']) $headdata .= lang('to').': '.$mailcontent['headers']['TO']."\n"; + if ($mailcontent['headers']['CC']) $headdata .= lang('cc').': '.$mailcontent['headers']['CC']."\n"; + if ($mailcontent['headers']['DATE']) $headdata .= lang('date').': '.$mailcontent['headers']['DATE']."\n"; + if ($mailcontent['headers']['PRIORITY'] && $mailcontent['headers']['PRIORITY'] != 'normal') $headdata .= lang('priority').': '.$mailcontent['headers']['PRIORITY']."\n"; + if ($mailcontent['headers']['IMPORTANCE'] && $mailcontent['headers']['IMPORTANCE'] !='normal') $headdata .= lang('importance').': '.$mailcontent['headers']['IMPORTANCE']."\n"; + //if ($mailcontent['headers']['ORGANIZATION']) $headdata .= lang('organization').': '.$mailcontent['headers']['ORGANIZATION']."\n"; + if (!empty($headdata)) $headdata .= "--------------------------------------------------------\n"; + } + if ($mailcontent['message']) + { + $tempname =tempnam($GLOBALS['egw_info']['server']['temp_dir'],$GLOBALS['egw_info']['flags']['currentapp']."_"); + $attachedMessages[] = array( + 'type' => 'TEXT/PLAIN', + 'name' => $mailcontent['subject'].'.txt', + 'tmp_name' => $tempname, + ); + $tmpfile = fopen($tempname,'w'); + fwrite($tmpfile,$headdata.$mailcontent['message']); + fclose($tmpfile); + } + foreach($mailcontent['attachments'] as $tmpattach => $tmpval) + { + $attachedMessages[] = $tmpval; + } + unset($attachments[$num]); + } + else + { + $attachments[$num] = array_merge($attachments[$num],$bofelamimail->getAttachment($uid, $attachment['partID'])); + if (isset($attachments[$num]['charset'])) { + $GLOBALS['egw']->translation->convert($attachments[$num]['attachment'],$attachments[$num]['charset']); + } + $attachments[$num]['type'] = $attachments[$num]['mimeType']; + $attachments[$num]['tmp_name'] = tempnam($GLOBALS['egw_info']['server']['temp_dir'],$GLOBALS['egw_info']['flags']['currentapp']."_"); + $tmpfile = fopen($attachments[$num]['tmp_name'],'w'); + fwrite($tmpfile,$attachments[$num]['attachment']); + fclose($tmpfile); + unset($attachments[$num]['attachment']); } - $attachments[$num]['type'] = $attachments[$num]['mimeType']; - $attachments[$num]['tmp_name'] = tempnam($GLOBALS['egw_info']['server']['temp_dir'],$GLOBALS['egw_info']['flags']['currentapp']."_"); - $tmpfile = fopen($attachments[$num]['tmp_name'],'w'); - fwrite($tmpfile,$attachments[$num]['attachment']); - fclose($tmpfile); - unset($attachments[$num]['attachment']); } + if (is_array($attachedMessages)) $attachments = array_merge($attachments,$attachedMessages); } - return $this->edit($this->bo->import_mail( - $mailaddress, - $subject, - $message, - $attachments, - strtotime($headers['DATE']) - )); - } - $GLOBALS['egw']->common->egw_header(); - echo ""; - $GLOBALS['egw']->common->egw_exit(); - exit; + return array( + 'mailaddress'=>$mailaddress, + 'subject'=>$subject, + 'message'=>$message, + 'attachments'=>$attachments, + 'headers'=>$headers, + ); } /**