コアを掘り下げて調べる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()
、この関数が引き継ぎ、パラメーターを追加します!
これはテストしていません。しかし、これは一般的な考え方です。それが役に立てば幸い。