gpt4 book ai didi

php - CodeIgniter 重命名电子邮件附件文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:59:17 27 4
gpt4 key购买 nike

我有用于发送带附件的电子邮件的 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 = '')

根据user guide :

If you’d like to use a custom file name, you can use the third parameter:

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

第三步:在 #409 行找到attach() 函数 并将其更改为:

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

关于php - CodeIgniter 重命名电子邮件附件文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18128250/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com