2011-05-04 52 views
0

下載CSV我有這樣的:的Perl,UNIX電子郵件:在瀏覽器的問題

open(MAIL,"|/usr/sbin/sendmail -t"); 
     ## Mail Header 
     print MAIL "To: $GLOB_OPT{email}\n"; 
     print MAIL "From: $GLOB_OPT{from}\n"; 
     print MAIL "Subject: $GLOB_OPT{sub}\n"; 
     print MAIL qq|Content-Type: text/html; charset=us-ascii\n|; 
     print MAIL qq|Content-Transfer-Encoding: 7bit\n|; 
     print MAIL qq|MIME-Version: 1.0\n\n|; 
     print MAIL qq|<h3>Download File :</h3><br>|; 
     print MAIL qq|<a href="$GLOB_OPT{html}" rel="nofollow" target="_blank">Click Here</a>|; 
    close(MAIL); 

我想要的超級鏈接發送給用戶,以便他們可以下載在$ {GLOB_OPT HTML}路徑csv文件。

當我打開電子郵件中的鏈接時,它會在瀏覽器中打開csv。我想要瀏覽器下載文件。我能做什麼?

回答

2

嘗試在HTTP頭使用content-disposition web服務器上的一側。這甚至適用於​​。

據我瞭解,你發送的方式,電子郵件有什麼與保存/選擇顯示在瀏覽器中。

+0

確實。一個鏈接是一個鏈接,並沒有什麼可以說「下載這個」。內容處置是要走的路。 – Quentin 2011-05-05 06:31:07

+0

@ David-Dorward:我認爲他們錯過了標準中的某些東西,比如'。 – Dallaylaen 2011-05-05 06:36:10

+0

http://www.w3.org/TR/html401/struct/links.html#adef-type-A – daxim 2011-05-05 07:18:43

0

您可以通過腳本輸出CSV,該腳本首先發送給瀏覽器的MIME頭「application/octet-stream」,而不是由Apache(或使用的服務器)發送的默認 MIME type。您還可以將服務器配置爲通過將.csv擴展名與「application/octet-stream」MIME類型關聯來自行發送標題。 另請參閱The apache docs

+0

所以基本上,我不能直接鏈接到csv。我必須發送到另一個腳本,輸出csv並更改爲文本/ csv ... – Gordon 2011-05-04 20:50:10

+0

你可以。看第二個鏈接。 所以你的情況這將是像在您的CSV文件的目錄 「將AddType應用程序/八位字節流的.csv」在a.htacces 文件。 – 2011-05-04 20:54:00

1

請勿使用系統sendmail命令。請使用MIME::Lite模塊。

他們有一個coding example這幾乎是你想要做什麼。

這樣,你不依賴於外部命令,可能會或可能無法正常工作(取決於系統和它的配置)。

+0

我加倍'MIME :: Lite'。 – Dallaylaen 2011-05-05 06:29:01