2013-01-19 56 views
0

你好我正在通過電子郵件的html表單提交。服務器端腳本是P H P。我的HTML表單文件附件郵件在PHP

<form action='sendmail.php' method='post'> 
    Name:<input type="text" name="name"> 
    File:<input type='file' name='attach'> 
<input type="submit"> 

發送電子郵件我的PHP文件是

<?php 
    $strTo = "[email protected]"; 
    $strHeader .= "From: ".$_POST["name"]."<".$_POST["name"].">"; 
    $strHeader .= "MIME-Version: 1.0\n"; 
    $strHeader .= "MIME-Version: 1.0\n"; 
    $strHeader .= "Content-Type: multipart/mixed; boundary=\"".$strSid."\"\n\n"; 
    $strHeader .= "This is a multi-part message in MIME format.\n"; 
    $strHeader .= "--".$strSid."\n"; 
    $strHeader .= "Content-type: text/html; charset=utf-8\n"; 
    $strHeader .= "Content-Transfer-Encoding: 7bit\n\n"; 
    $strHeader .= $strMessage."\n\n"; 
if($_FILES["attach"]["name"] != "") 
{ 
     $strFilesName = $_FILES["fileAttach"]["name"]; 
     $strContent = chunk_split(base64_encode(file_get_contents($_FILES["fileAttach"]["tmp_name"]))); 
     $strHeader .= "--".$strSid."\n"; 
     $strHeader .= "Content-Type: application/octet-stream; name=\"".$strFilesName."\"\n"; 
     $strHeader .= "Content-Transfer-Encoding: base64\n"; 
     $strHeader .= "Content-Disposition: attachment; filename=\"".$strFilesName."\"\n\n"; 
     $strHeader .= $strContent."\n\n"; 
     } 
$flgSend = @mail($strTo,"no-subjet",null,$strHeader); 

,但如果它不打算在條件

+0

我沒有收到附件 – deepak

回答

7

嘗試用這種替代你的表單:

<form action="sendmail.php" method="post" enctype="multipart/form-data"> 
    Name:<input type="text" name="name"> 
    File:<input type="file" name="attach" id="attach"> 
    <input type="submit"> 
</form> 

The enctype屬性的形式很重要。

請參見下面的鏈接瞭解詳情: http://www.w3schools.com/php/php_file_upload.asp

還要確保所有在PHP匹配HTML的名稱,如文件輸入的名稱是附加,所以應該是在PHP一樣。

if($_FILES["attach"]["name"] != "") 
{ 
    $strFilesName = $_FILES["attach"]["name"]; 
    ... 
} 
+2

我會背誦您的答案,而不是添加自己的字段名稱不匹配。它是HTML中的'name =「attach」',但PHP中的$ _FILES ['fileAttach']'。 – AgentConundrum

+0

非常感謝你 – deepak

+0

AgentConundrum你是對的,我主要是回答問題爲什麼不進入狀態。添加到答案中。 – Legoless