Hatena::ブログ(Diary)

memo×memo

2014-12-06

CakePHP勉強メモ9 CakeEmailクラスを使ったメール送信メモ

***CakeEmailクラスを使ったメール送信*** のメモ
■CakeEmailクラス
CakePHPでEmail関連を取り扱うクラス
‐メールの送信(テキスト、HTML、マルチパートメール(テキスト、HTML混合)
定型文の利用
‐ファイル添付
‐設定ファイルの利用
       などの機能を提供。

○方法
 ‐mail関数を利用して送信する方法(←今回こっち)
 ‐SMTPサーバーを指定して送信する方法

○事前準備(mail関数が使用できるか確認)
 mail関数使用するコード書いてPHPを確認(エラー出なかったのでOK?)
 (上記でできていなかったら確認方法or設定方法記述)

○簡単なメール送信のサンプル作成
 デバッグ機能を利用して送信されるメールの内容を確認
 
 $emailはCakeEmailクラスのインスタンス
 ※$email->transport('Debug');
 デバッグ機能を利用するよう設定
 
 ※$messages = $email->send();
  send関数の返り値にはheaderとmessageをキーに持つ連想配列が返される。
 
 ! syntax error, unexpected T_VARIABLE のエラーで30分ほど悩む。
  原因スペルミス(2か所)
 
 ⊆尊櫃縫汽鵐廛襯瓠璽襪鯀信してみる
  Debug関数引数を'Mail'にする。
 
 ■参考サイト
 CakeEmailでメール送信(@gmail)
 http://kwski.net/cakephp-2-x/1017/
 
 CakePHPのCakeEmailでメール送信してみた
 http://www.b-prep.com/blog/?p=1293
 
 ※email.php に設定を追加、利用する必要がある。
 
 Gmailを利用する場合、信頼性の低いアプリケーションを許可する設定にしないといけないみたい。
 ■参考サイト
 CakeEmailでgmailアカウントを使う
 http://weekend-it.blog.jp/archives/11476259.html
 
 Outlookメール
 http://stackoverflow.com/questions/14809816/cakephp-send-mail-through-smtp-to-ms-outlook-smtp-error-504-5-7-4-unrecogni
 
 ****!その他、設定項目について記述!***
 メール送信のエラーが出ないが、受信できない。
  →
  
 ************************
 
○メールヘッダインジェクション対策
 ‐メールヘッダインジェクションとは
 メールヘッダの値の部分にユーザーの入力値を入れる場合、
 アプリケーション作成者の意図しないヘッダなどが挿入されるセキュリティホール
 
 対策
 画面表示、データベース格納時と同様に、
 ユーザーの入力値をエスケース処理する。
 メールヘッダの場合は、入力値の改行文字を削除するように記述する。
 
 参考サイト
 http://into.cocolog-nifty.com/pulog/2014/01/post-ee98.html
 
 例)
 $organization = preg_replace("/\r/", '', $organization);
 $organization = preg_replace("/\n/", '', $organization);

windowsのテキストの改行の場合 \r\n
macntoshのテキストの改行の場合 \r
unixのテキストの改行の場合 \n

○ファイルを添付する(そのまま)
 send関数を呼び出す前にattachmentsメソッドを追記する
 例)
 $email->attachments(APP, ファイルおディレクトリへのパス)
 
○ファイル名を変えて添付する
○複数のファイルを添付する
 attachmentsメソッドにファイル名の配列を渡す
テンプレートを使ったメール送信

**************************

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ant_mugi/20141206/1417839159