Пример #1
0
 public function actionAttachment($params)
 {
     GO::session()->closeWriting();
     $file = new \GO\Base\Fs\File('/dummypath/' . $params['filename']);
     $account = Account::model()->findByPk($params['account_id']);
     //$imapMessage = \GO\Email\Model\ImapMessage::model()->findByUid($account, $params['mailbox'], $params['uid']);
     if ($file->extension() == 'dat') {
         return $this->_tnefAttachment($params, $account);
     }
     $inline = true;
     if (isset($params['inline']) && $params['inline'] == 0) {
         $inline = false;
     }
     //to work around office bug: http://support.microsoft.com/kb/2019105/en-us
     //never use inline on IE with office documents because it will prompt for authentication.
     $officeExtensions = array('doc', 'dot', 'docx', 'dotx', 'docm', 'dotm', 'xls', 'xlt', 'xla', 'xlsx', 'xltx', 'xlsm', 'xltm', 'xlam', 'xlsb', 'ppt', 'pot', 'pps', 'ppa', 'pptx', 'potx', 'ppsx', 'ppam', 'pptm', 'potm', 'ppsm');
     if (\GO\Base\Util\Http::isInternetExplorer() && in_array($file->extension(), $officeExtensions)) {
         $inline = false;
     }
     $imap = $account->openImapConnection($params['mailbox']);
     \GO\Base\Util\Http::outputDownloadHeaders($file, $inline, true);
     $fp = fopen("php://output", 'w');
     $imap->get_message_part_decoded($params['uid'], $params['number'], $params['encoding'], false, true, false, $fp);
     fclose($fp);
 }