CodeIgniterでEmail送信

CodeIgniterのEmailクラスを利用すると、とても簡単にメールを送信することができます。CodeIgniterでEmail送信をしてみたいと思います。

ファイルを新規作成して、以下のコードを入力し、『application/controllers』フォルダに『testmail.php』で保存します。

class Testmail extends CI_Controller{
function index()
{
$this->load->library('email');

$this->email->from('nakada@winroad.info','WinRoad徒然草');
$this->email->to('sousinsaki@gmail.com');
$this->email->subject('Emailの送信テスト');
$this->email->message('Emailクラスからの送信テストです');

$this->email->send();

echo $this->email->print_debugger();
}
}

ブラウザから『http://ci.winroad.jp/testmai』と入力してみると、直ちにメールが送信され、メール送信の状況が確認できます。

では、実際に届いたメールを確認してみましょう。私のGmailに送ってみました。docomo携帯にも送ってみましたが、文字化けもしていませんでした。

それでは、簡単なメール送信用のプログラムを作成してみましょう。いつものようにDreamweaverで、フォームを作成し、その中に4行2列のテーブルを作成、テキストフィールドとテキストエリアを作成します。テキストフィールドは宛先に『mailto』、件名に『subject』、テキストエリアの内容に『body』と名称をつけます。一番下にボタンを挿入します。『application/views』フォルダに『testmail_view.php』の名前で保存します。

次に先程のコントローラを若干修正します。

class Testmail extends CI_Controller{
function index()
{
$this->load->view('testmail_view');
}
function send_mail()
{
$this->load->library('email');

if($this->input->post('mailto')!=null){
$mailto=$this->input->post('mailto');
$subject=$this->input->post('subject');
$body=$this->input->post('body');
$this->email->from('nakada@winroad.info','WinRoad徒然草');
$this->email->to($mailto);
$this->email->subject($subject);
$this->email->message($body);

$this->email->send();

echo $this->email->print_debugger();
}else{
$this->load->view('testmail_view');
}
}
}

次に、『testmail_view.php』も修正します。formの『action=””』を『action=”../testmail/send_mail”』と変更します。

コードを直接いじった方が早いので、上記のように書きましたが、DreamWeaverのデザインモードからも変更できます。タグセレクタの『form』をクリックし、プロパティのアクションに、『../testmail/send_mail』と入力しても同じです。

それでは、実際にブラウザで確認してみます。『http://ci.builwing.info/testmail』と入力してみます。メールの送信画面が表示されますので、宛先、件名、内容を入力して『送信』ボタンをクリックすれば、メールが送信されます。

受信したメールを確認してみました。

コードの解説

コントローラ『testmai.php』の解説をします。

$this->load->view(‘testmail_view’);

以前にもやってますので、解説の必要はないと思いますが、『testmail_view.php』のビューファイルを表示するためのコードです。

$this->load->library(‘email’);

これが今回の主役、Emailクラスを呼び出すコードです。

if($this->input->post(‘mailto’)!=null){

これもほとんど説明の必要はないと思いますが、POST送信された『mailto』がnull値でなければ、以下のプログラムを実行します。

$mailto=$this->input->post(‘mailto’);

POST送信された『mailto』の値を変数$mailtoに代入します。以下の2行も同様ですので、説明をカットします。

$this->email->from(‘送信メールアドレス’,’送信者名’);

送信メールアドレスと送信者の名前を設定します。

$this->email->to(‘受取人のメールアドレス’);

受取人のメールアドレスをセットします(複数可)。複数指定するときは、カンマ区切りで指定するか、配列で指定します。

$this->email->cc(‘CCのメールアドレス’);

今回のプログラムでは使用しませんでしたが、CCのメールアドレスを指定することができます。複数指定は『to』と同じです。

$this->email->bcc(’BCCのメールアドレス’);

『cc』と同様、BCCのメールアドレスを指定することができます。

$this->email->subject(‘件名’);

メールの件名をセットします。

$this->email->message(’本文’);

メールの本文をセットします。

$this->email->send();

メール送信のメソッドです。条件判断ができるように送信が成功したか失敗したかの基づいてブール値のTRUEかFALSEが帰ります。

if( ! $this->email->send())
{
//エラー時のプログラム
}

$this->email->print_debugger();

全てのサーバーメッセージ、メールヘッダ、メールメッセージを文字列として返します。デバックに役立ちます。

以上で本日は終了にします。尚、実際問題としてメールソフトとして使用するには、住所録のデータベースを作成し、その住所録からメールアドレスを引っ張ってくるようにするのが普通だと思います。がんばって作成してみてください。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ