2013-10-22 52 views
1

您好,我有一個收集文件的簡單表單。我的意思是用戶應該能夠將文件放入該字段,然後通過提交表單郵件應發送到預定義和硬編碼的地址。以表格形式從文件輸入發送附件

這裏是我的形式:

<form action='/?page=admin-send' method='post' class='asholder' enctype=\"multipart/form-data\">\n"; 
    <input type='file' name='file' id ='file'/><button name='accept' value='".$ssl->id."' type='submit'>Send</button> 
</form> 

現在使用Php我想收集這些文件,並把它變成電子郵件附件。

$file = $_FILES["file"]["name"]; 
      $filename = basename($file); 
      $file_size = filesize($file); 
      $content = chunk_split(base64_encode(file_get_contents($file))); 
      $uid = md5(uniqid(time())); 
      $msg = "Hello, this is email with attachment!"; 

      $mail = new HTMLMail(); 
      $mail->from = 'DO NOT REPLY'; 
      $mail->to = '[email protected]'; 
      $mail->subject = 'admin warrning'; 
      $mail->importance = 'Low'; 
      $mail->body = "<P><FONT SIZE=2 FACE=\"Tahoma\">$msg</FONT></P>"; 
      $mail->headers = "From: ".$from."\r\n" 
       ."MIME-Version: 1.0\r\n" 
       ."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n" 
       ."This is a multi-part message in MIME format.\r\n" 
       ."--".$uid."\r\n" 
       ."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n" 
       ."Content-Transfer-Encoding: base64\r\n" 
       ."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n" 
       .$content."\r\n\r\n" 
       ."--".$uid."--"; 

      $mail->send(); 

這裏是我有問題的情景: 我把與xyz.pdf名稱是一些文件,最重要的是,這份文件是所有正確的文件。當我提交表格時,我正在收到電子郵件。電子郵件有附件,名稱是xyz.pdf,但是當我試圖打開這個文件時,我收到文件爲borken的消息。

任何人都可以指出我在做什麼錯?

回答

0

已完成同一種任務,我希望我的回答會幫助你肯定。


你是讓用戶上傳文件 > * 2. *在使用PHP > * 3.您的服務器端處理它*和他們使用的是 HTML郵件類發送你的郵件。
問題出在 第三步。如果課程沒有爲您提供足夠的郵件功能,那麼它不值得使用。 自己寫郵件標題帶來了很多複雜性,我們作爲開發人員不應該那麼做。
我建議您使用 PHPMailer 5.1.2來完成這項工作。這非常簡單,不超過80KB(核心文件,不包括演示,指南)。
使用此功能,您可以附加任何MIME類型(pdf,jpeg,doc等)的多個文件,而無需擔心標題。這很簡單,我已經測試過,附件可以在郵箱中閱讀。
如果您使用演示下載了完整的軟件包,您將會看到使用PHP實現是多麼容易。
PHPMailer是最好的免費的PHP類在網上發送郵件(我認爲)沒有錯誤。
我還沒有使用過HTML Mail類,所以不知道它是否有附加文件的功能。但是寫郵件頭並不好。如果您在瞭解完所有內容後根據您的意願使用它,那麼我很抱歉發佈此答案。

+0

我忘了一件事,如果你去下載PHPMailer,然後從sourceforge.com下載它,它也包括各種演示,以使它清晰。 – jitendra

+0

官方PHPMailer的github自述文件說:**請*不要*使用SourceForge或谷歌代碼項目** –

+0

@ jave.web - 我在6個月前使用過。我不記得來源。請谷歌..你會發現肯定的。這會工作。嘗試! – jitendra

相關問題