2012-09-18 58 views
3

我在使用PHP中的PEAR Mail發送CSV時遇到問題。我可以收到OK消息,甚至可以打開CSV附件 - 但內容顯示爲base64編碼的字符串,而不是正常的CSV。PEAR郵件發送CSV失敗

下面是相關的代碼,其輸出是這樣的:在所連接的CSV

SUQsRW

顯然不是我要去的!

// $csv is originally something like 
// a,b,c,d,e 
// d,e,f,g,h 

$csv = base64_encode($csv); 
$from = "..."; 
$to = "..."; 
$subject = "..."; 

$headers = array(); 
$headers['From'] = $from; 
$headers['To'] = $to; 
$headers['Subject'] = $subject; 

// The attachment 
$mime = new Mail_mime(); 
$mime->addAttachment($csv, "text/csv", "report.csv", false); 
$mime->setTXTBody($bodyText); 

$params = array(); 
$params['text_charset'] = 'utf-8'; 

$body = $mime->get($params); 
$headers = $mime->headers($headers); 

$smtp = Mail::factory('smtp', [unrelated server args]); 
$mail = $smtp->send($to, $headers, $body); 

回答

3

因此,顯然你不需要base64編碼實際的文件內容。在任何情況下,我還是沒能在Excel中打開文件時,它給了我下面的錯誤:

SYLK: File format is not valid

該解決方案描述here。根據知識庫,它只適用於Mac的Excel,但我在Windows上看到錯誤。無論如何,解決方案是正確的,CSV不能以ID作爲前兩個字符開始。

+0

WOW。感謝您找出答案。被困住了一段時間! – Vik