$mail->Body = '';
我發現我要寄信時,我會寫入一整個 html + css 語法,還會添加 php 語言
就像是:
$mail->Body = '
<html>
<head>
'.$phpmailerCssStyle.'
</head>
<body>
<div class="edm-layout">
<img src="'.$host_url.'images/logo.png">
<div class="line"></div>
</div>
<div class="edm-content">
<div class="edm-hithere">
嗨,'.$getUser['name'].' <br>XXX '.$prodTotal.' XXXXX<br>XXXXXX'.formatProductPrice($thisTotal).' XXX
</div>';
$row_distinct = mysqli_fetch_array($cako_id_distinct);
$cako_data = $pdo->query(
"SELECT XXXXXXX "
);
$mail->Body .= '
<div class="edm-products">
'.$row_distinct['XXXX'];
//.......
</body>
</html>
類似那麼長的代碼
我是否可以把它收納到一個文件中,只要簡單引入就可以了?
$mail->Body = 'xxx.php'; or require_once...
有辦法實現嗎?
或其他方式?
至少我在這一頁的代碼不會看到這一長串的代碼.....
你想用PHP跑 可以用cURL
存成Template再用str_replace改 是比較好的做法((我覺得
有條件的話 我會寫
{#if xxx}//... {/#if}
{#while sss} // ... {/#while sss}
這之類的 match去抓來跑replace
簡單作法...
$str = file_get_contents("test.php");
$mail->Body = $str;
mail->Body = str;
還是
mail->Body = $str;
忘了寫$str,一行也可以…
$mail->Body = file_get_contents("test.php");
如果裡面有夾帶 php 語言呢?假設我在A放上這個 file_get_contents,test.php可以吃到A的 php 嗎?
先試了有問題再說吧,要看情況,不確定你的情境是不是會有問題
試了,確實沒辦法吃到
'.$phpmailerCssStyle.'
'.$getUser['name'].'
類似這樣
幫補充:
應該是吃不到,
吃不到變數的話,記得以前有用很笨的方法,先定義好有哪些變數再取代掉
大概像這樣
test.php:
Hello {{#userName}} !;
mail.php:
$userName = 'asys0512';
$str = file_get_contents("test.php");
$newStr = str_replace("{{#userName}}", $userName, $str);
就算把 sql 丟進去,也沒辦法吃,會印成純 HTML
在外部處理,再用str_replace取代就好,這不是什麼困難的問題,有用過smarty或mvc就知道,是一樣的原理
了解,想問如果是多個 str_replace 呢?以及 test.php 裡面如果有牽涉 while 呢
就連while都拉到外部來做,做完再replace,多個 str_replace參考以下作法…
https://blog.csdn.net/CCC65A8780D2C/article/details/53138441