みずの日記

ボカロとかニコ動とか忘備録とか

CodeIgnitorでメール送信

コードイグナイタでメール送信。
やっぱりというか案の定というか、バグが含まれているので、
オリジナルを拡張することに。

MY_Email.php を作成し、以下のとおりにする。

<?php

class MY_Email extends CI_Email {

    function __construct()
    {
        parent::__construct();
    }
	
	/**
	 * オリジナルはStripSlashesが入っているため、文字化け対策に何もしない。
	 * @param string $body
	 * @return MY_Email 
	 */
	public function message($body)
	{
		$this->_body = rtrim(str_replace("\r", "", $body));
		return $this;
	}
}


ところが、なぜか、初期設定を読み込んでくれない。
仕方がないので、CoreクラスのLoaderライブラリを解析してみるけど、
読み込まれた$configデータがなぜか、デフォルト値に摩り替わって保存される。
というか、ちゃんと渡されてないっぽい。
途中でしんどくなったので、解析は終了。
多分バグだからそのうち修正されるんじゃないかなと。
こういうのってどこに投稿すればいいんだ?

<?php
		$this->load->library('email');
		$this->config->load('email', true);
		$this->email->initialize($this->config->item('email'));

というわけで、Emailクラスを読み込んだ時にもう一度Configを読み込み直し。
Initializeクラスに渡すことで、初期設定。