CodeIgniter переименуйте файл вложения электронной почты

У меня есть скрипт CodeIgniter для отправки электронной почты с вложениями.

$this->ci->email->attach("/path/to/file/myjhxvbXhjdSycv1y.pdf"); 

Он отлично работает, но я понятия не имею, как переименовать прикрепленный файл в более удобную для пользователя строку?

CodeIgniter v3.x

Эта функция была добавлена ​​с 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

Однако для CodeIgniter v2.x вы можете расширить библиотеку Email чтобы реализовать это:

  1. Создайте копию system/libraries/Email.php и поместите ее в application/libraries/
  2. Переименуйте файл и добавьте префикс MY_ (или все, что вы установили в config.php ) application/libraries/MY_Email.php
  3. Откройте файл и измените следующее:

Сначала: вставьте это в строку # 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');