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); }