2013-07-16 17 views
0

我正在使用PHPmailer为客户发送电子优惠券。我想向用户发送一个动态的html文档作为正文,但是当我参考这个文件时,我得到一个错误。PHPMailer - 无法加载MsgHTML

我的代码如下:

$sessionid = '12345'; 
$cid = '98765'; 
require('class.phpmailer.php'); 
$bodytext1 = "Your Evoucher is attached for ".$row_checkout['name']; 
$email = new PHPMailer(); 
$email->From  = '[email protected]'; 
$email->FromName = 'xxx.com'; 
$email->Subject = 'Your e-voucher for '.$row_checkout['name']; 
$email->AddAddress($row_user['email']); 
$email->MsgHTML(file_get_contents('mail.php?sid='.$sessionid.'&cid='.$cartid)); 

$file_to_attach = $sessionid.'/'.$bookingid.'.pdf'; 

$email->AddAttachment($file_to_attach , $bookingid.'.pdf'); 
return $email->Send(); 

当我运行它,我得到以下错误:

Warning: file_get_contents(mail.php?sid=12345&cid=98765) [function.file-get-contents]: failed to open stream: No such file or directory in /home4/mission/public_html/xxx.com/evoucher/new/createandmail.php on line 93 

但是,如果我不把这些变量中的URL,即

$email->MsgHTML(file_get_contents('mail.php')

发送罚款,但带有不正确的领域的身体秒。

有什么建议吗?

回答

0

您必须使用完整的URL(包含协议:http://..)或使用文件名。 mail.php?sid...不是一个文件名 - 这是一个相对uri,它是apache的handeld。如果你使用file_get_contents('mail.php'),你发送原始的php文件,这可能不是你想要的。

您也可以尝试,而不是使用file_get_contents('http://server.com/mail.php?...'

0

您无法将GET参数添加到要加载的文件。 file_get_contents会加载你的php文件内容 - 不是脚本会产生什么内容。

如果启用了URL的fopen您可以添加完整的URL地址mail.php,但它并不总是最好的主意,也可以包括这mail.php到您的代码(但是第一个变化_GET到内部变量)

0

我建议使用cURL则内容应正确获取的mail.php的获取内容的virtual功能。 (或使用file_get_contents中的完整url)

0

您可以包含文件并使用当前脚本中的变量(会话和购物车ID)。如果您在包含的PHP脚本中设置HTML正文,则不会有任何问题。