2010-12-20 33 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實例化的?

但這不能正常工作

這是一個毫無意義的聲明。請提供錯誤信息或結果與預期結果不同的詳細信息。