私はcodeigniterライブラリから送信された電子メールに関するいくつかの追加情報を送付したいと思います。これを設定または追加する方法はありますか?codeigniterのメールに余分なヘッダー情報を追加
自分のサイトからのすべての送信メールを分類したいと思います。私は、追跡のためにsendgridカテゴリヘッダを含める必要があります。
私はcodeigniterライブラリから送信された電子メールに関するいくつかの追加情報を送付したいと思います。これを設定または追加する方法はありますか?codeigniterのメールに余分なヘッダー情報を追加
自分のサイトからのすべての送信メールを分類したいと思います。私は、追跡のためにsendgridカテゴリヘッダを含める必要があります。
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/
よし私はちょうどここで最善の答えを改善したいと思います。 クレジットは@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が含まれており、設定が適切に渡されているようです。
感謝して答えてください! :)
は...説明のため
$this->email->set_header($header, $value);
感謝として –
を
$config
パラメータセットカスタムヘッダーを渡し、私は送信メールに新しいヘッダを追加することに成功し、このメソッドを使用しています。しかし、私がそれを使うと、smtp設定を保持するemail.php設定ファイルには何の注意も払わなくなります。両方を行う方法はありますか? – Gortron
このクラスを使用すると、@ Gortronは正しいです。config/email.phpから設定を失います。私がそれを解決した方法は、元のクラスからCONSTRUCT()関数全体をコピーすることです。親は行いません:: __ construct();なぜそれが起こっているのか分かりませんが、完全なコンストラクタをコピーすると動作します。コメントがコード全体に対して短すぎるため、私は以下の答えをもう一度作成します:) –