繁体   English   中英

使用CI电子邮件类将其他参数添加到mail()

[英]Adding additional parameters to mail() using CI email class

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

PHP本机mail():

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

Codeigniter:

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

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() ,此函数将接管并附加参数!

还没有测试过。 但这是总的想法。 希望能帮助到你。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM