FuelPHPで簡単Email送信

FuelPHPでEmail送信する方法を調べてみたいと思います。Emailは設定ファイルもしくはオートロード設定で、パッケージを有効にする必要があるみたいです。オートロード設定でパッケージを有効にする方法で作成してみたいと思います。

1) 『fuel/app/config/config.php』を開きます。187行目あたりに’packages’=>array(),がありますので、ここにEmailパッケージを有効にするために、’email’を追加します。

2) マニュアルには、『app/config/emai.php』ファイルをコピーもしくは新規作成して下さい。とありますが、これは、『fuel/packages/email/config』フォルダ内のemail.phpファイルをそのままコピーしてくれば大丈夫だと思います。そしてコピー後のファイルを書き換えるようにして下さい。とりあえずコピーしたemail.phpファイルはデフォルトのままにしておきます。

3) それでは、『FulePHPの導入』で作成した『fuel/app/classes/controller』フォルダののsample1.phpファイルにメール送信用のメソッドを作成したいと思います。下記のコードを追加します。

public function action_sendmail()
 {
 //インスタンスの作成
 $email=Email::forge();
 //メール情報の設定
 $email->from('nakada@winroad.info','WinRoad徒然草');
 $email->to('nakada@i.softbank.jp','中田');
 $email->subject('テストメール');
 $email->body('これはテストメールです');
//メール送信
 $email->send();
 //メール送信後のビュー表示
 return Response::forge(View::forge('sample1/sendmail'));
 }

4) 『fuel/app/views/sample1』フォルダにsendmail.phpファイルを作成し、適当に『メールを送信しました』等の文字を入力して保存します。

5) それでは、ブラウザで『http://fuel.trial.jp/fuelphp/sendmail』と入力してみます。メールは無事?送信されたのですが、文字化けを起こしています。

6) 『fuel/app/config』フォルダのconfig.phpファイルを修正します。72行目から73行目を’ja’、72行目を’ja’,73行目はそのままで、75行目を’ja_JP.utf8’に変更します。85行目を’Asia/Tokyo’に変更します(kenjis様のご指摘により修正しました)。

7) Gmailの文字化けは解消されたのですが、携帯(iphone)では、from情報、及びto情報の日本語が文字化けします。修正方法がわかれば後日修正しますが、本日はsendmailメソッドを日本語を使わないように修正します。

public function action_sendmail()
 {
 //インスタンスの作成
 $email=Email::forge();
 //メール情報の設定
 $email->from('nakada@winroad.info','WinRoad');
 $email->to('nakada@i.softbank.jp','nakada');
 $email->subject('テストメール');
 $email->body('これはテストメールです');

 //メール送信
 $email->send();
 //メール送信後のビュー表示
 return Response::forge(View::forge('sample1/sendmail'));
 }

8) 一応メールは送れるには送れるのですが、コントローラにメール情報を全て記載するのは、現実的ではありませんので、フォームに相手先のメールアドレスや表題、内容を入力して、メールを送信するように作り替えたいと思います。

9) 『app/views/sample1』フォルダにcreatemail.phpファイルを作成し、メール送信用のフォームを作成します。

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Eメール</title>
</head>
<body>
メール送信
<form name="form1" method="post" action="sendmail">
 <table width="100%" border="1">
 <tr>
 <th scope="row">宛先</th>
 <td><label for="to"></label>
 <input name="to" type="text" id="to" size="40"></td>
 </tr>
 <tr>
 <th scope="row">送信元</th>
 <td><label for="from"></label>
 <input name="from" type="text" id="from" size="40"></td>
 </tr>
 <tr>
 <th scope="row">表題</th>
 <td><label for="subject"></label>
 <input name="subject" type="text" id="subject" size="40"></td>
 </tr>
 <tr>
 <th scope="row">内容</th>
 <td><label for="body"></label>
 <textarea name="body" id="body" cols="40" rows="5"></textarea></td>
 </tr>
 <tr>
 <th colspan="2" scope="row"><input type="submit" name="button" id="button" value="送信"></th>
 </tr>
 </table>
</form>
</body>
</html>

10) 『fuel/app/classes/controller/sample1.php』ファイルを開きます。createメソッドを作成します。

public function action_createmail()
 {
 return Response::forge(View::forge('sample1/createmail'));
 }

11) sendmailメソッドを下記のように修正します。

public function action_sendmail()
 {
 //POSTデータを受け取る
 $to=Input::post('to');
 $from=Input::post('from');
 $subject=Input::post('subject');
 $body=Input::post('body');
 //インスタンスの作成
 $email=Email::forge();
 //メール情報の設定
 $email->to($to);
 $email->from($from);
 $email->subject($subject);
 $email->body($body);
//メール送信
 $email->send();
 //メール送信後のビュー表示
 return Response::forge(View::forge('sample1/sendmail'));
 }

12) それでは、『http://fuel.trial.jp/fuelphp/sample1/createmail』でメール送信用のフォームを開きメールを送信してみます。

13) きちんとメールが送信されました。

本日は以上です。

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

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

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

トラックバック

  1. […] 参考: FuelPHPで簡単Email送信 | WinRoad徒然草 […]

コメント

  1. kenjis より:

    config.phpファイルの73行目はフォールバックの設定なのでenのままにしてください。
    これは、デフォルトの言語ファイルがない場合に使う言語です。

    ところで、Gmailでの文字化けに関係したのはlocaleの設定でしょうかね?

    • nakada より:

      kenjis様
      早速のご指摘ありがとうございます。修正しておきました。
      Gmailの文字化けの件ですが、これもご指摘の通り、localeの設定でした。
      順に変更して試してみたのですが、localeの設定を変更したときに文字化けが解消されました。


コメントをどうぞ

このページの先頭へ