2010-12-20 57 views
0

我在做邮件概念。在这个我想发送一个动态的附件与电子邮件。 实际上用户获取附件的电子邮件。这个附件将是动态的。如何为email创建动态附件。我试过这个。但没用。任何人的帮助。使用php创建动态附件

我有“attachments.txt'file与内容

User Name: <<name>> 
Designid:<<designid>> 
Designname:<<designname>> 
Orderid:<<orderid>> 

我更新了这个文件作为

$myfile = "attachments.txt"; 
$fh = fopen($myfile, 'w') or die("can't open file"); 
$stringData = str_replace("<<name>>", $fetuser[firstname], $fh); 
//echo $fetuser[firstname];exit; 
fwrite($fh, $stringData); 
$stringData = str_replace("<<designid>>",$_SESSION[designid], $fh); 
fwrite($fh, $stringData); 
$stringData = str_replace("<<designname>>", $fetch_designname[designtype], $fh); 
fwrite($fh, $stringData); 
$stringData = str_replace("<<orderno>>", $ordno, $fh); 
fwrite($fh, $stringData); 
fclose($fh); 

最后我加入附件在邮件这样$mail->AddAttachment("$myfile");

但这工作不正常。任何人的帮助。

回答

3

我不认为你可以像这样将文件处理程序传递给str_replace。首先阅读内容,替换占位符,然后再次写入文件。此外,如果您将此文件写入包含模板的相同文件,第二次发送电子邮件时将不再是模板,但我相信您会想到这方面的内容:)

编辑:

所以,你可以做些事情是这样的:

$text = file_get_contents($templateFile); 

// perhaps some error handling here 

$text = str_replace(array('<<name>>', '<<designid>>', '<<designname>>', '<<orderid>>'), 
        array($fetuser[firstname], $_SESSION[designid], $fetch_designname[designtype], $ordno), 
        $text); 

file_put_contents($attachmentFile, $text); 
+0

感谢您的回复。我会试试这个。 – 2010-12-20 10:54:44

+0

是的。你是对的。它将不再是一个模板。但我想它会像一个模板。怎么能? – 2010-12-20 11:44:30

+0

那么,只需使用一个文件作为模板,并且只能从中读取,并使用另一个文件(或多个文件)作为附件。另外,正如@symcbean所建议的那样,可以添加附件而无需先将它们写入磁盘,这会更好。不过,你必须知道如何去做。无论如何,这里的关键不是写入你的模板文件。 – 2010-12-20 11:54:32

1

为什么难为到文件写回磁盘?这不是必需的。

$ mail-> AddAttachment(“$ myfile”);

你能否给我们一些线索是从哪个$ mail实例化的?

但这不能正常工作

这是一个毫无意义的声明。请提供错误信息或结果与预期结果不同的详细信息。