1

我正在尝试找到一种使用 Codeigniters 电子邮件类(使用 mail() 发送方法)向电子邮件添加附加参数的方法。我找不到任何文档或其他信息。你们知道框架内是否有办法吗?

PHP本机邮件():

mail ( string $to , string $subject , string $message [, string $additional_headers 
       [, string $additional_parameters ]] );

代码点火器:

$this->load->library('email');
$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->additional_parameters('something_goes_here'); // this is what I need
$this->email->send();
4

2 回答 2

1

CodeIgniter 的电子邮件库只是 PHP 的mail()的包装器。

如果你深入内核并检查system/libraries/Email.php_send_with_mail()是启动 PHP 原生的函数mail()

安全模式下的当前实现使用:

mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str)

当前没有安全模式的实现使用:

mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])

两者都不允许用户定义的内容填充$additional_parameters变量。您需要扩展CI_Email该类来完成此操作:

application/libraries/创建一个MY_Email.php包含内容的文件:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Email extends CI_Email{
    public $additional_params = "";
    function __construct(){
        parent::__construct();
    }

    function additional_params($ap){
        $this->additional_params = $ap;
    }

    protected function _send_with_mail(){
        if ($this->_safe_mode == TRUE){
            if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, $this->additional_params)) return FALSE;
            else return TRUE;
        }
        else{
                if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From']) . " " . $this->additional_params)) return FALSE;
                else return TRUE;
        }
    }    


}

现在,要使用它:

$this->email->additional_params('something_goes_here');

当您调用 时$this->email->send(),此函数将接管并附加参数!

没有测试过这些。但这是一般的想法。希望能帮助到你。

于 2012-09-27T20:22:57.927 回答
0

随意使用 php mail() 函数。框架并不意味着您必须使用框架中的每个功能。

于 2012-09-27T20:29:37.093 回答