![](/img/trans.png)
[英]Codeigniter 3, ubuntu - mail is sent using native PHP mail function, but not with CI Email class
[英]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();
如果您深入研究内核并检查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.