2011-05-06 6 views
1

나는 을 개발하고 싶습니다. 직업에 온라인으로 신청하십시오. 이력서를 업로드하기 위해 다음 코드를 작성했지만 사용자가 "적용"을 클릭하면 업로드 된 이력서를 전자 메일 첨부 파일로 보내려고합니다. phpmailer를 사용 중이며 이메일을 보내는데 성공했지만 파일이 첨부되지 않았습니다. 이메일에 첨부 파일 phpmailer

은 여기에 파일을 업로드하려면 코드입니다 :

if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0) 
{ 

    $fileName = $_FILES['userfile']['name']; 
    $tmpName = $_FILES['userfile']['tmp_name']; 
    $fileSize = $_FILES['userfile']['size']; 
    $fileType = $_FILES['userfile']['type']; 

    $fp  = fopen($tmpName, 'r'); 
    $content = fread($fp, filesize($tmpName)); 
    $content = addslashes($content); 
    fclose($fp); 

    if(!get_magic_quotes_gpc()) 
    { 
     $fileName = addslashes($fileName); 
    } 
    $connect=mysql_connect("localhost","root","") or die("Couldnt connect"); 
    mysql_select_db("dbname") or die("Couldnt DB"); 

    $query = "INSERT INTO upload (name, size, type, content) ". 
     "VALUES ('$fileName', '$fileSize', '$fileType', '$content')"; 
     mysql_query($query) or die('Error, query failed'); 

    echo "<br>File $fileName uploaded<br>"; 

    $uploads_dir = 'uploads/'; 
    move_uploaded_file($tmpName, "$uploads_dir/$fileName"); 

} 

을 그리고 이것은 PHPmailer 코드 : 나는 "업로드"폴더 내가 거기에 업로드 된 모든 파일을 얻고 만든

$mail->AddAttachment("uploads"."/".$fileName); 

. 하지만 파일을 전자 메일 첨부 파일로 업로드하지는 않습니다.

+0

우리가 여기에서 볼 수없는 메일러 코드와 관련된 문제 일 수 있습니다. 최소한 $ echo-> AddAttachement와 같은 줄을 파일 $ fileName이 존재하기 전에 추가하십시오. "(file_exists ("uploads/". $ fileName)?"yes ":"no "); ' –

+1

코드 게시 방법을 살펴보십시오. 앞에 4 칸 있고 공백/들여 쓰기를 추가하고 모든 내용을 한 줄에 추가하지 말고 읽기가 힘듭니다. 'tip :'PHPMailer의 코드가 맞다. 제대로 작동한다. 상대 경로 대신 첨부 파일의 절대 경로를 사용해보십시오. –

+0

올리버, 내가 말한대로 에코 라인을 추가했습니다. "파일 있음 : 예 파일에 액세스 할 수 없습니다 : 업로드 /"메시지. 이메일을 받았지만 첨부 파일이 없습니다. – user695575

답변

0

PHP 버전은 무엇입니까? class.phpmailer.php 클래스에서 뭔가를 발견했습니다. 그것이 여기 (= '64 기수를'$ 경로, $ 인코딩)

개인 기능 EncodeFile : 이 기능을 검색

private function EncodeFile($path, $encoding = 'base64') { 
try { 
    if (!is_readable($path)) { 
    throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE); 
    } 
    if (function_exists('get_magic_quotes')) { 
    function get_magic_quotes() { 
     return false; 
    } 
    } 
    if (PHP_VERSION < 6) { 
    $magic_quotes = get_magic_quotes_runtime(); 
    set_magic_quotes_runtime(0); 
    } 
    $file_buffer = file_get_contents($path); 
    $file_buffer = $this->EncodeString($file_buffer, $encoding); 
    if (PHP_VERSION < 6) { set_magic_quotes_runtime($magic_quotes); } 

    return $file_buffer; 
} catch (Exception $e) { 
    $this->SetError($e->getMessage()); 
    return ''; 
} 

}

이 기능을 확인하고 있습니다 볼 수 있듯이 당신의 PHP_VERSION. 6 세 미만인 경우 (PhpVersion 6은 magic_codes 기능이 삭제됩니다 !!!) magic_quotes 기능 마녀를 사용하려고 시도하면 은 Php5 이상에서이 아닙니다.

그래서 ... 당신은 수표 * * function_exists와 을 PhpMailer 소스 코드를 완료하는 데이 문제를 해결 할 수 있는지 *의 magic_quotes * 기능

0

... 가능하거나 코드를 언급 간단한 사용이 시도 대답, 그것은 첨부 파일을 어떻게 든 부패 첨부 시체를 첨부하는 데 문제가있는 것 같아 Add attachment through PHPMailer

관련 문제