2012-01-30 17 views
6

私はcodeigniterライブラリから送信された電子メールに関するいくつかの追加情報を送付したいと思います。これを設定または追加する方法はありますか?codeigniterのメールに余分なヘッダー情報を追加

自分のサイトからのすべての送信メールを分類したいと思います。私は、追跡のためにsendgridカテゴリヘッダを含める必要があります。

答えて

10

CodeIgniter電子メールクラスでは、手動でヘッダを設定することはできません。ただし、これを変更して、sendgridヘッダを設定できる新しい関数を追加することで変更できます。

CodeIgniterのマニュアルの「拡張ネイティブライブラリ」を参照してください:
http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html
はここにあなたの新しい電子メールのクラスのコードがどのように見えるかです。

class MY_Email extends CI_Email { 

    public function __construct(array $config = array()) 
    { 
     parent::__construct($config); 
    } 

    public function set_header($header, $value){ 
     $this->_headers[$header] = $value; 
    } 
} 

あなたは、このようなあなたの新しい電子メールのクラスを使用してヘッダーを設定することができるだろう:

$this->email->set_header($header, $value); 

このページSendGridに渡すことができますどのようなヘッダを説明します: http://sendgrid.com/docs/API%20Reference/SMTP%20API/

+0

感謝として –

+0

$configパラメータ

class MY_Email extends CI_Email { public function __construct(array $config = array()) { parent::__construct($config); } public function set_header($header, $value) { $this->_headers[ $header ] = $value; } } 

セットカスタムヘッダーを渡し、私は送信メールに新しいヘッダを追加することに成功し、このメソッドを使用しています。しかし、私がそれを使うと、smtp設定を保持するemail.php設定ファイルには何の注意も払わなくなります。両方を行う方法はありますか? – Gortron

+1

このクラスを使用すると、@ Gortronは正しいです。config/email.phpから設定を失います。私がそれを解決した方法は、元のクラスからCONSTRUCT()関数全体をコピーすることです。親は行いません:: __ construct();なぜそれが起こっているのか分かりませんが、完全なコンストラクタをコピーすると動作します。コメントがコード全体に対して短すぎるため、私は以下の答えをもう一度作成します:) –

6

よし私はちょうどここで最善の答えを改善したいと思います。 クレジットは@Teknisktに行きますが、ここでの唯一の違いは/application/config/email.phpにある設定が無視されることです。特に、カスタムSTMP設定を使用している場合は特に問題になります。

ここで私は上記の答えから改善してきたMY_Email.phpクラスの完全なコードです:

class MY_Email extends CI_Email { 

public function __construct($config = array()) 
{ 
    if (count($config) > 0) 
    { 
     $this->initialize($config); 
    } 
    else 
    { 
     $this->_smtp_auth = ($this->smtp_user == '' AND $this->smtp_pass == '') ? FALSE : TRUE; 
     $this->_safe_mode = ((boolean)@ini_get("safe_mode") === FALSE) ? FALSE : TRUE; 
    } 

    log_message('debug', "Email Class Initialized"); 
} 

// this will allow us to add headers whenever we need them 
public function set_header($header, $value){ 
    $this->_headers[$header] = $value; 
    } 
} 

はそれが役に立てば幸い! :)

私のテストでは、/config/email.phpが含まれており、設定が適切に渡されているようです。

感謝して答えてください! :)

1

は...説明のため

$this->email->set_header($header, $value); 
関連する問題