Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
メールテンプレートどうしてますか?
Search
KOYAMA Tetsuji
September 29, 2014
Programming
300
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
メールテンプレートどうしてますか?
PHPで作成されたサービスでメールを送信する際に、テンプレートをどう使いますかという話。
KOYAMA Tetsuji
September 29, 2014
More Decks by KOYAMA Tetsuji
See All by KOYAMA Tetsuji
PIE (PHP Installer for Extensions) をみんなで試そう/piseka-pie
koyhoge
0
120
君はPostScriptなウィンドウシステム 「NeWS」をご存知か?/sunnews
koyhoge
0
1k
全日本PHPカンファレンス2024スタンプラリーについて/stamprally-php2024
koyhoge
0
210
日本PHPカンファレンス2024スタンプラリーとその実装/phpcon-stamprally
koyhoge
1
2.5k
日本のPHPカンファレンスの歩みと、その辺もろもろ/phpcon_japan_history
koyhoge
0
350
Inside SWOOLE: 非同期処理はどのようにして動くのか/inside_swoole
koyhoge
0
19k
映画を年300本観る技術/watch_300_movies_in_a_year
koyhoge
0
1.3k
Swooleで実装するPHP非同期処理の世界/phpcondo2019-swoole
koyhoge
3
6k
CloudFormation と FaaS のはざま - Kubernetes の設計思想を探る -/cf-faas-k8s
koyhoge
0
1.6k
Other Decks in Programming
See All in Programming
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
気持ちぃ〜角丸 Squircle
ryu1013
0
320
【加筆修正版】Laravel のアプリケーションをどこにデプロイするか #phpcon_ehime
akase244
0
160
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
4.2k
Railsバージョンを4倍にした話
optim
0
520
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.1k
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
170
Next.js: The final boss of Web Performance
guaca
0
310
golang-bob.pdf
iwatsukayura
0
130
Simple Storage Service(S3) is not simple
iwatsukayura
0
310
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1k
Featured
See All Featured
BBQ
matthewcrist
90
10k
Into the Great Unknown - MozCon
thekraken
41
2.8k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Speed Design
sergeychernyshev
33
2.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
The browser strikes back
jonoalderson
0
1.8k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
Ruling the World: When Life Gets Gamed
codingconduct
0
410
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Believing is Seeing
oripsolob
1
250
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Transcript
ϝʔϧςϯϓϨʔτ Ͳ͏ͯ͠·͔͢ খࢁࢤ !LPZIPHF ୈճ1)1ษڧձ౦ژ http://joind.in/12013
BCPVU͍͜΄͛ ‣খࢁࢤ ͜·ͯͭ͡ ‣ϑϦʔϥϯεϓϩάϥϚʔ ‣5XJUUFS!LPZIPHF ‣GBDFCPPLIUUQGBDFCPPLDPNLPZIPHF ‣ೱ͍ώήLPZIJHF ڊ΄͛LZPIPHFͱΑؒ͘ ҧ͑ΒΕΔ
ϝʔϧૹ৴ ‣αʔϏε͔ΒϢʔβʹϝʔϧΛૹΔͷ·͊ී௨ ‣ొ֬ೝ ‣֤छ௨ ‣ཧऀͷϨϙʔτϝʔϧ ‣࣍ɾि࣍ɾ݄࣍ ‣Ξϥʔτ
ϝʔϧຊจੜ ‣มల։͍ͨ͠ ‣ςϯϓϨʔτΤϯδϯ͏ ‣ςϯϓϨʔτϑΝΠϧ %# ‣4VCKFDUผʹ࣋ͭ ‣ϝʔϧૹ৴ϥΠϒϥϦຊจͱϝʔϧϔομ ผѻ͍ͷ߹͕ଟ͍
'SPNͱΤϯϕϩʔϓGSPN ‣'SPNϔομӦۀతͳཧ༝Ͱมߋ͞ΕΔ ‣ςϯϓϨʔτతʹॲཧ͍ͨ͠ ‣ΤϯϕϩʔϓGSPNΤϥʔͷ߹ͷฦૹΞυϨ ε ‣γεςϜݻఆͰߏΘͳ͍
͜ΜͳํͲ͏͔ ‣ϝʔϧςϯϓϨʔτ ‣ςϯϓϨʔτΤϯδϯͷػೳͰׂࣗ͝༝ʹ ‣ϝʔϧϔομॻ͜͏ͱࢥ͑ॻ͚Δ ‣4VCKFDU ‣'SPN ‣3FQMZUP
From: {{ mail_from }} Subject: ご登録ありがとうございます。 ! {{ username }}様
! このたびは、ほげサービスにご登録ありがとうござ います。 以下のURLをクリックして最終登録作業をして下さ い。 ! {{ confirm_url }} ! 今後ともほげサービスをよろしくお願いします。 ςϯϓϨʔτྫ
From: “ほげサービスサポート” <
[email protected]
> Subject: ご登録ありがとうございます。 ! ぺちぱ太郎様 ! このたびは、ほげサービスにご登録ありがとうござ います。
以下のURLをクリックして最終登録作業をして下さ い。 ! http://hoge.example.com/confirm/DqoGkxQi2fN ! 今後ともほげサービスをよろしくお願いします。 มల։ޙ
// まず空行をチェック $headend = strpos($message, "\n\n"); if ($headend === false)
{ // 空行がなければいきなり本文 $this->headers = array(); $this->body = $message; return; } ࠷ॳͷۭߦ·Ͱϔομ
$head = substr($message, 0, $headend); $body = substr($message, $headend +
2); ! $checkempty = trim($body); if (empty($checkempty)) { // やはりヘッダなし $this->headers = array(); $this->body = $message; return; } ϔομͱຊจΛ͚Δ
$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; ֤ϔομʹׂ
͓·͚ ‣ςϯϓϨʔτΤϯδϯ͑ͳ͍Ҋ݅ ‣1)1ͦͦςϯϓϨʔτΤϯδϯͩͱ͍͏ ͜ͱΛΕͯͳ͍͔ʂ ‣FWBM͢ΕΠΠδϟφʔΠX
From: ${mail_from} Subject: ご登録ありがとうございます。 ! ${username}様 ! このたびは、ほげサービスにご登録ありがとうござ います。 以下のURLをクリックして最終登録作業をして下さ
い。 ! ${confirm_url} ! 今後ともほげサービスをよろしくお願いします。 ςϯϓϨʔτྫ
function render($template, $params) { extract($params); ! $code = 'return "'
. addslashes($template) . '";'; $result = eval($code); return $result; } ؆қςϯϓϨʔτΤϯδϯ
֎෦͔ΒͷೖྗΛ QBSBNTʹೖΕΔࡍʹ ҙ͢Δ͜ͱʂX
͓͠·͍