У меня есть скрипт CodeIgniter для отправки электронной почты с вложениями.
$this->ci->email->attach("/path/to/file/myjhxvbXhjdSycv1y.pdf");
Он отлично работает, но я понятия не имею, как переименовать прикрепленный файл в более удобную для пользователя строку?
Эта функция была добавлена с CI v3 :
/** * Assign file attachments * * @param string $file Can be local path, URL or buffered content * @param string $disposition = 'attachment' * @param string $newname = NULL * @param string $mime = '' * @return CI_Email */ public function attach($file, $disposition = '', $newname = NULL, $mime = '')
Согласно руководству пользователя :
Если вы хотите использовать имя настраиваемого файла, вы можете использовать третий параметр:
$this->email->attach('filename.pdf', 'attachment', 'report.pdf');
Однако для CodeIgniter v2.x вы можете расширить библиотеку Email
чтобы реализовать это:
system/libraries/Email.php
и поместите ее в application/libraries/
MY_
(или все, что вы установили в config.php
) application/libraries/MY_Email.php
Сначала: вставьте это в строку # 72 :
var $_attach_new_name = array();
Второй: измените код в строке # 161-166 на:
if ($clear_attachments !== FALSE) { $this->_attach_new_name = array(); $this->_attach_name = array(); $this->_attach_type = array(); $this->_attach_disp = array(); }
Третье: найдите функцию attach()
в строке # 409 и измените ее на:
public function attach($filename, $disposition = 'attachment', $new_name = NULL) { $this->_attach_new_name[] = $new_name; $this->_attach_name[] = $filename; $this->_attach_type[] = $this->_mime_types(pathinfo($filename, PATHINFO_EXTENSION)); $this->_attach_disp[] = $disposition; // Can also be 'inline' Not sure if it matters return $this; }
Четвертое: Наконец, в строке # 1143 измените код на:
$basename = ($this->_attach_new_name[$i] === NULL) ? basename($filename) : $this->_attach_new_name[$i];
$this->email->attach('/path/to/fileName.ext', 'attachment', 'newFileName.ext');