CakeEmailでメール送信(@gmail)

CakePHP 2になって追加されたクラスCakeEmailがシンプルに使えます。これを使用してメール送信を行う処理を実装してみました。

CakeEmailクラスの読み込み

/app/Config/bootstrap.php(全体的に使用する場合)もしくは各々の(使用する)コントロールに定義します。

App::uses( 'CakeEmail', 'Network/Email');

CakeEmailの設定

database.phpと同様、/app/Config下に設定ファイルが用意されています(email.php.default)ので、email.phpにリネームして下さい。そこに使用するメールサーバの設定を行います。以下はGmailからの送信設定を追加しています。

// /app/Config/email.php
class EmailConfig {
    public $default = array(
        ....
    );
    // Gmailを例
    public $gmail = array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => 465,
        'username' => 'username@gmail.com', // ユーザ名
        'password' => 'password',           // パスワード
        'transport' => 'Smtp',
        'tls' => true
    );
    // さくらインターネットを例
    public $sakura = array(
        'host' => '______.sakura.ne.jp',  // 初期ドメイン
        'port' => 587,
        'username' => 'username@______.sakura.ne.jp', // ユーザ名:
        // 初期ドメインのメールアドレスもしくは、独自ドメインのメールアドレス
        'password' => 'password',           // メールパスワード
        'transport' => 'Smtp',
    );
}

送信処理(メール本文ベタ書き)

newでインスタンス化する際にそこで使用する設定を引数で渡します。('gmail')

    $email = new CakeEmail( 'gmail');                        // インスタンス化
    $email->from( array( 'sender@domain.com' => 'Sender'));  // 送信元
    $email->to( 'reciever@domain.com');                      // 送信先
    $email->subject( 'メールタイトル');                      // メールタイトル

    $email->send( 'メール本文');                             // メール送信

送信処理(メール本文をテンプレート化)

    $email = new CakeEmail( 'gmail');                        // インスタンス化
    $email->from( array( 'sender@domain.com' => 'Sender'));  // 送信元
    $email->to( 'reciever@domain.com');                      // 送信先
    $email->subject( 'メールタイトル');                      // メールタイトル

    $email->emailFormat( 'text');                            // フォーマット
    $email->template( 'templete');                           // テンプレートファイル
    $email->viewVars( compact( 'var1', 'var2'));             // テンプレートに渡す変数

    $email->send();                                          // メール送信
  • emailFormat
    'html'もしくは'text'を選択します。
    また、'both'と設定しtemplateをhtml・textと用意しておくとマルチパートメールを送信することも可能です。
  • template
    使用するテンプレートファイルを指定。emailFormatが
    htmlの場合 => /app/View/Emails/html下
    textの場合 => /app/View/Emails/text下
    に、.ctpで配置
  • viewVars
    テンプレートに渡す変数を必要なだけcompactして、$var1などでアクセス

「This email was sent ~」

テンプレートを使用した際にメール本文末尾に付けられる"This email was sent using the CakePHP Framework, http://cakephp.org"を消すのは、/app/View/Layouts/Emails/text/default.ctp (もしくは、/app/View/Layouts/Emails/html/default.ctp)から

  • このエントリーをはてなブックマークに追加

関連記事

Markdown Plugin

「Markdown CakePHP Plugin」は、MarkDown書式をレンダリングしてくれるビューヘルパーです。MarkDownについて勉強しているうちに出会ったので試し打ちです。 ダウンロー

独自のバリデーションルールを作成

CakePHPで組み込みバリデーションルールをつくる方法は、正規表現を定義する方法と独自メソッドを定義する方法の2つがあるようです。 参考 Custom Validation Rules 正規

Formヘルパーのinputタグのdiv/labelなどの設定

Formヘルパーのinputではデフォルトでは以下のようにdivで囲われて、labelが付与されて出力されます。 CSSのフレームワークなどであらかじめ決まったスタイルがある場合に便利に作られていま

Blowfishを使用してハッシュ化する

使用方法 Blowfishを採用してハッシュ化を行う場合、Securityクラスのhashメソッドを呼び出します。第2引数に'blowfish'を指定し、第3引数を指定しないもしくはfalseにしま

Js/Cssファイルの読み込みや出力する方法

CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン

Cookieログイン

今回は、ログイン画面でよくみかけるクッキーログインの機能を使ってみます。 CakePHPには、Cookieコンポーネントがあります。(PHPのsetcookieメソッドのラッパー)メソッドはwr

多言語サイト向けに翻訳ファイルを使って翻訳を行う

CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook

FormヘルパーのMagicOption (マジックオプション) 

Formヘルパーでは、「フィールド名」,「テーブルカラムのデータ型」もしくはモデルの「バリデーション設定」によりフォーム要素を決定したり、自動で属性を付与する「マジックオプション」と呼ばれるものがある

アップロードファイルのバリデーションルール

CakePHP 2.2や2.3になってファイルアップロードに対するルールがコアバリデーションに追加されているようで、まとめてみました。 コアバリデーション 関連しそうなルールは以下の4つの

selectボックスを実装

今まで、selectボックスのgroupを作成するのにSet::Combineを使用していましたが、意外と簡単にできることに気付いてしまったので、ご紹介。(自分だけ知らなかったことに気付いた と言った

Comment

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑