Upgrade to Pro — share decks privately, control downloads, hide ads and more …

メールテンプレートどうしてますか?

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

 メールテンプレートどうしてますか?

PHPで作成されたサービスでメールを送信する際に、テンプレートをどう使いますかという話。

Avatar for KOYAMA Tetsuji

KOYAMA Tetsuji

September 29, 2014
Tweet

More Decks by KOYAMA Tetsuji

Other Decks in Programming

Transcript

  1. From: {{ mail_from }} Subject: ご登録ありがとうございます。 ! {{ username }}様

    ! このたびは、ほげサービスにご登録ありがとうござ います。 以下のURLをクリックして最終登録作業をして下さ い。 ! {{ confirm_url }} ! 今後ともほげサービスをよろしくお願いします。 ςϯϓϨʔτྫ
  2. From: “ほげサービスサポート” <[email protected]> Subject: ご登録ありがとうございます。 ! ぺちぱ太郎様 ! このたびは、ほげサービスにご登録ありがとうござ います。

    以下のURLをクリックして最終登録作業をして下さ い。 ! http://hoge.example.com/confirm/DqoGkxQi2fN ! 今後ともほげサービスをよろしくお願いします。 ม਺ల։ޙ
  3. // まず空行をチェック $headend = strpos($message, "\n\n"); if ($headend === false)

    { // 空行がなければいきなり本文 $this->headers = array(); $this->body = $message; return; } ࠷ॳͷۭߦ·Ͱ͸ϔομ
  4. $head = substr($message, 0, $headend); $body = substr($message, $headend +

    2); ! $checkempty = trim($body); if (empty($checkempty)) { // やはりヘッダなし $this->headers = array(); $this->body = $message; return; } ϔομͱຊจΛ෼͚Δ
  5. $heads = explode("\n", $head); ! $headers = array(); foreach ($heads

    as $header) { // divide by ':' list($h, $v) = explode(':', $header, 2); $h = strtolower(trim($h)); $v = trim($v); $headers[$h] = $v; } ! $this->headers = $headers; $this->body = $body; ֤ϔομʹ෼ׂ
  6. function render($template, $params) { extract($params); ! $code = 'return "'

    . addslashes($template) . '";'; $result = eval($code); return $result; } ௒؆қςϯϓϨʔτΤϯδϯ