2013-04-26 6 views
1

나는 다음과 같은 형식이 있습니다첨부 파일로 이메일로 이력서를 보내

<form method="POST" name="email" action="sendemail.php" enctype="multipart/form-data"> 
    <table border=0 cellPadding=5 cellSpacing=10 width=100%> 
     <tr> 
      <td><label for='position'>Position:</label></td> 
      <td><input type=text name=position class=position value="" READONLY size=35 /></td> 
     </tr> 
     <tr> 
      <td><label for='uploaded_file'>Resume:</label></td> 
      <td><input type="file" name="uploaded_file"></td> 
     </tr> 
     <tr> 
      <td colSpan=2 align=center><input class=subbtn type="submit" value="Submit" name='submit' /></td> 
     </tr> 
     <tr> 
      <td colSpan=2><hr /></td> 
     </tr> 
     <tr> 
      <td colSpan=2 align=center style="padding-top: 5px;"><input type=button value="Close Window" class="close" /></td> 
     </tr> 
    </table> 
</form> 

다음과 같은 sendemail.php :

<?php 

$uf = $_POST['uploaded_file']; 

    $to = "[email protected]"; 
    $subject = "This is subject"; 
    $message = "This is test message."; 
    # Open a file 
    $file = fopen($uf, "r"); 
if($file == false) 
    { 
    echo "Error in opening file"; 
    exit(); 
    } 
    # Read the file into a variable 
    $size = filesize($file); 
    $content = fread($file, $size); 

    # encode the data for safe transit 
    # and insert \r\n after every 76 chars. 
    $encoded_content = chunk_split(base64_encode($content)); 

    # Get a random 32 bit number using time() as seed. 
    $num = md5(time()); 

    # Define the main headers. 
    $header = "From:[email protected]\r\n"; 
    $header .= "MIME-Version: 1.0\r\n"; 
    $header .= "Content-Type: multipart/mixed; "; 
    $header .= "boundary=$num\r\n"; 
    $header .= "--$num\r\n"; 

    # Define the message section 
    $header .= "Content-Type: text/plain\r\n"; 
    $header .= "Content-Transfer-Encoding:8bit\r\n\n"; 
    $header .= "$message\r\n"; 
    $header .= "--$num\r\n"; 

    # Define the attachment section 
    $header .= "Content-Type: multipart/mixed; "; 
    $header .= "name=\"test.txt\"\r\n"; 
    $header .= "Content-Transfer-Encoding:base64\r\n"; 
    $header .= "Content-Disposition:attachment; "; 
    $header .= "filename=\"test.txt\"\r\n\n"; 
    $header .= "$encoded_content\r\n"; 
    $header .= "--$num--"; 

    # Send email now 
    $retval = mail ($to, $subject, "", $header); 
    if($retval == true) 
    { 
     echo "Message sent successfully..."; 
    } 
    else 
    { 
     echo "Message could not be sent..."; 
    } 
?> 

내가 양식을 사용하여 이력서를 보내려고, 내가 할을 다음 오류 :

Error in opening file

누군가가 문제의 해결 방법 및 해결 방법을 알려줄 수 있습니까?

+0

마임 이메일을 직접 작성하지 마십시오. PHPmailer 또는 Swiftmailer를 사용하십시오. 둘 다 사소한 일로 작성해야하는 메일 처리 코드의 양을 크게 줄입니다. –

답변

2

업로드 된 파일은 그들은 $ _FILES 배열에하는 $ _POST 배열에 있지 않습니다.

그래서 _FILES가 [ 'uploaded_file'] [ 'tmp_name'] 대신에 $ _POST [ 'uploaded_file']의

은 $ _FILES의 추가 구현을위한 http://www.php.net/manual/en/features.file-upload.post-method.php를 참조 $를 사용합니다.

파일을 업로드 할 때 보안 문제를 처리하고 PHP에서 is_uploaded_file() 함수를 사용하여 파일의 유효성을 검사하십시오.

+0

[ 'tmp_name']은 어디에 사용됩니까? POST로 파일을 변경할 수 있습니까? – Si8

+1

tmp_name은 파일이 서버에 저장된 임시 이름입니다. –

+1

'[ 'tmp_name']'은 서버의 임시 파일의 파일 경로입니다. – Dom

-1

사용 === 대신 ==의

if($file === false) 

또는

if(!$file) 
+2

어떻게 도움이 될까요? –

+0

'! $ file'은 말 그대로'$ file == false'와 같습니다. 파일 핸들은 결코 '0'이 아니므로 엄격한 동등성 테스트가 필요하지 않습니다. –

1
<?php 

$to = $_POST['toEmail']; 
$fromEmail = $_POST['fieldFormEmail']; 
$fromName = $_POST['fieldFormName']; 
$subject = $_POST['fieldSubject']; 

/* GET File Variables */ 
$tmpName = $_FILES['attachment']['tmp_name']; 
$fileType = $_FILES['attachment']['type']; 
$fileName = $_FILES['attachment']['name']; 

/* Start of headers */ 
$headers = "From: $fromName"; 

if (file($tmpName)) { 
    /* Reading file ('rb' = read binary) */ 
    $file = fopen($tmpName,'rb'); 
    $data = fread($file,filesize($tmpName)); 
    fclose($file); 

    /* a boundary string */ 
    $randomVal = md5(time()); 
    $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 

    /* Header for File Attachment */ 
    $headers .= "\nMIME-Version: 1.0\n"; 
    $headers .= "Content-Type: multipart/mixed;\n" ; 
    $headers .= " boundary=\"{$mimeBoundary}\""; 

    /* Multipart Boundary above message */ 
    $message = "This is a multi-part message in MIME format.\n\n" . 
    "--{$mimeBoundary}\n" . 
    "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
    "Content-Transfer-Encoding: 7bit\n\n" . 
    $message . "\n\n"; 

    /* Encoding file data */ 
    $data = chunk_split(base64_encode($data)); 

    /* Adding attchment-file to message*/ 
    $message .= "--{$mimeBoundary}\n" . 
    "Content-Type: {$fileType};\n" . 
    " name=\"{$fileName}\"\n" . 
    "Content-Transfer-Encoding: base64\n\n" . 
    $data . "\n\n" . 
    "--{$mimeBoundary}--\n"; 
} 

$flgchk = mail ("$to", "$subject", "$message", "$headers"); 

if($flgchk){ 
    echo "<script language='javascript' type='text/javascript'> 
     alert('Success'); 
     window.location = 'index.php'; 
    </script>"; 
} 
else{ 
    echo "<script language='javascript' type='text/javascript'> 
     alert('Message failed'); 
     window.location = 'index.php'; 
    </script>"; 
} 
?> 
+0

감사합니다 ... 나는 그것을 해결했습니다 :) – Si8

관련 문제