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.4k
日本の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
5.9k
CloudFormation と FaaS のはざま - Kubernetes の設計思想を探る -/cf-faas-k8s
koyhoge
0
1.6k
Other Decks in Programming
See All in Programming
Security issues being discussed on Web Platforms
petamoriken
0
740
テストを司るデーモンに会いに行く 〜隔離した仮想マシンでテストを通すまで〜
h1d3mun3
1
160
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
440
業務時間外もAIに働いてもらう話
colorful12
3
10k
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
600
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
140
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
670
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
280
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
300
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
150
iOSDC Japan 2026 - Swiftで作って学ぼう!データベース自作入門
kaseken
2
110
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
Automating Front-end Workflow
addyosmani
1369
210k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
690
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
450
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
530
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Making the Leap to Tech Lead
cromwellryan
135
10k
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
͓͠·͍