簡體   English   中英

嘗試使用PHP郵件程序發送響應式電子郵件

[英]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 ,但是效率低下且容易出錯。

使用輸出緩沖是最簡單的方法,但是如果您想要更大的靈活性和控制力,請使用諸如SmartyTwig之類的模板語言。

為了使用Zurb,您確實需要CSS內襯(例如emogrifier)來對渲染的模板進行后處理,否則,在gmail和其他低質量的郵件客戶端中,這些東西會分崩離析。

僅供參考,這個堆棧-Zurb模板,Smarty,emogrifier,PHPMailer-正是我構建的smartmessages.net中使用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM