[英]Trying to send a responsive email using PHP mailer
我在php文件中有一個響應電子郵件模板,試圖用PHP郵件發送器發送失敗,但沒有成功。 我的代碼如下所示。
$m = new PHPMailer;
$m ->isSMTP();
$m->SMTPAuth=true;
// debugging
// $m->SMTODebug=1
// endof debug
$m->Host="smtp.gmail.com";
$m->Username="example@gmail.com";
$m->Password="blahblah";
$m->SMTPSecure='ssl';
$m->Port=465;
$m->isHtml(true);
$m->Subject = 'Welcome to Efie';
$m->msgHTML(file_get_contents('functions/register-email.php'), dirname(__FILE__));
$m->FromName="Contact Form Efie";
$m->AddAddress($email,$fname);
if($m->send()) {
echo '<p class="errors bg-success text-success">Email Received</p>';
}
這與響應能力沒有任何關系-只需在Zurb CSS中使用CSS媒體查詢即可,它不需要任何JavaScript。
您看到的問題是file_get_contents
從字面上獲取文件的內容,它沒有作為PHP腳本運行。 有幾種解決方法。
您可以在將文件分配給變量時include
文件,如下所示:
$body = include 'functions/register-email.php';
$m->msgHTML($body, dirname(__FILE__));
這種方法的問題在於,您不能只將內容放在文件中,而是需要將其作為值return
,因此您的模板應類似於:
<?php
$text = <<<EOT
<html>
<body>
<h1>$headline</h1>
</body>
</html>
EOT;
return $text;
一種更簡單的方法是使用輸出緩沖,這使模板文件更簡單:
ob_start();
include 'functions/register-email.php';
$body = ob_get_contents();
ob_end_clean();
$m->msgHTML($body, dirname(__FILE__));
模板將很簡單:
<html>
<body>
<h1><?php echo $headline; ?></h1>
</body>
</html>
無論哪種方式,模板文件都可以訪問您的局部變量,插值將起作用。
還有其他選項,例如使用eval
,但是效率低下且容易出錯。
使用輸出緩沖是最簡單的方法,但是如果您想要更大的靈活性和控制力,請使用諸如Smarty或Twig之類的模板語言。
為了使用Zurb,您確實需要CSS內襯(例如emogrifier)來對渲染的模板進行后處理,否則,在gmail和其他低質量的郵件客戶端中,這些東西會分崩離析。
僅供參考,這個堆棧-Zurb模板,Smarty,emogrifier,PHPMailer-正是我構建的smartmessages.net中使用的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.