使用 PHPMailer 和 Mandrill 发送模板
Posted
技术标签:
【中文标题】使用 PHPMailer 和 Mandrill 发送模板【英文标题】:Sending templates with PHPMailer and Mandrill 【发布时间】:2014-10-26 15:22:14 【问题描述】:我使用 phpMailer 编写了一个脚本,该脚本使用 Mandrill 发送电子邮件。我正在尝试发送一个用 bootstrap 制作的 html 模板,但是当邮件到来时,CSS 不起作用。
我尝试使用 file_get_contents()
函数获取 html 内容,但它没有获取引导样式表。有什么想法吗?
这是脚本
<?php
include "../phpmailer/PHPMailerAutoload.php";
include "../phpmailer/class.phpmailer.php";
error_reporting(E_ALL^E_NOTICE);
if (!isset($_POST['Submit']) |$_POST['Submit'] != 'Trimite')
$adress = '';
else
$adress = $_POST['adress'];
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.mandrillapp.com';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'username';
$mail->Password = 'key';
$mail->SMTPSecure = 'tsl';
// $mail->SMTPDebug = 1;
$mail->From = 'email@example.com';
$mail->FromName = 'Name';
$mail->AddAddress($adress);
$mail->IsHTML(true);
$mail->Subject = 'Subject';
$mail->Body = file_get_contents( 'process_completed.html' );
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
?>
【问题讨论】:
你的路径正确吗? check this它会帮助你 路径正确。该脚本发送html模板但没有css(bootsrap库的包含) 您要将整个引导程序 CSS 放入电子邮件中?!您知道电子邮件客户端不获取外部样式表吗?要完成这项工作,您必须在process_completed.html
中包含 CSS - 您没有显示生成正文的代码,这似乎是这个问题的内容。顺便说一句,如果您加载自动加载器(原样),您也不需要加载 PHPMailer 类 - 自动加载器会为您完成。
【参考方案1】:
我用内联 css 制作了一个模板,它可以工作。谢谢。
【讨论】:
【参考方案2】:许多电子邮件客户端不呈现位于电子邮件 HTML 头部的 CSS。在向 Mandrill 提交电子邮件之前,您需要内联 CSS,或者使用 Mandrill 的 CSS inlining option。
【讨论】:
【参考方案3】:如果您在电子邮件模板中使用任何外部 css 文件将不起作用。
在电子邮件模板中仅使用内联 css。
【讨论】:
【参考方案4】:$mail->SMTPSecure = 'tsl';
应该是:
$mail->SMTPSecure = 'tls';
【讨论】:
以上是关于使用 PHPMailer 和 Mandrill 发送模板的主要内容,如果未能解决你的问题,请参考以下文章
Mailgun、Mandrill 和 Ses 驱动程序、SMTP 和 phpmailer,在 Laravel 5.1 中使用哪一个?