1

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();
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 に答える