2014-09-02 137 views
0

我使用PHPMailer制作了一个使用Mandrill发送邮件的脚本。我试图发送一个使用bootstrap制作的html模板,但是当邮件到来时,CSS不起作用。 我试图用file_get_contents()函数获取html内容,但它没有得到引导样式表。有任何想法吗?使用PHPMailer和Mandrill发送模板

这里是脚本

<?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 protected]'; 

     $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'; 

    } 
?> 
+0

是你的路径是否正确? [检查此](http://php.net/manual/en/function.file-get-contents.php)它会帮助你 – 2014-09-02 11:17:32

+0

路径是正确的。该脚本发送HTML模板,但没有CSS(包括靴子库) – Graver 2014-09-02 11:24:18

+0

你把整个引导CSS放入电子邮件?!你知道电子邮件客户端不会获取外部样式表吗?为了做到这一点,你必须在CSS中加入'process_completed.html' - 你没有展示你的代码来生成正文,这似乎是这个问题的关键。顺便说一句,如果你加载自动加载器(就像你一样),你也不需要加载PHPMailer类 - 自动加载器会为你做。 – Synchro 2014-09-02 12:29:40

回答

2
$mail->SMTPSecure  = 'tsl'; 

大概应该是:

$mail->SMTPSecure  = 'tls'; 
0

如果您正在使用的电子邮件模板中的任何外部CSS文件将无法正常工作。

在电子邮件模板中只使用内嵌css。

0

许多电子邮件客户端不会渲染位于电子邮件HTML头部的CSS。在将电子邮件提交给Mandrill之前,您需要先嵌入CSS,或者使用Mandrill的CSS inlining option

0

我做了一个模板,内嵌的CSS它的工作原理。谢谢。