채택완료

php 메일에 첨부파일 붙여 보내는 중에 질문하나 드려봅니다.

<form action="sendmail.php" method="post" name="forms" id="forms" enctype="multipart/form-data">

  <br>

  <table width="575" border="0" cellspacing="4">

    <tr>

      <td width="200" valign="bottom"><div align="right" class="style3 style4"><span class="style6">*</span> <span class="style9 style7">성 명 (Name)</span></div></td>

      <td width="354">

      <input name="name" type="text" class="input" id="name" size="30">

      </td>

    </tr>

    <tr>

      <td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">메 일 (E-mail)</span> </div>        <div align="right" class="style5"> </div></td>

      <td>

      <input name="e_mail" type="text" id="e_mail" size="58">

      </td>

    </tr>

    <tr>

      <td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">제 목 (Subject)</span> </div></td>

      <td>

      <input name="subject" type="text" id="subject" size="58">

      </td>

    </tr>

    <tr>

      <td valign="top"><div align="right" class="style5">

          <p><br>

              <span class="style6">*</span> <span class="style7">내 용 (Contents)</span> </p>

      </div></td>

      <td>

      <textarea name="contents" cols="57" rows="8" id="contents"></textarea>

       </td>

    </tr>

    <tr>

      <td valign="bottom"><div align="right"><span class="style6">*</span> <span class="style7 style3">첨부파일 (File)</span></div></td>

      <td>

      <input name="upfile" type="file" size="40">

      </td>

    </tr>

    <tr align="right">

      <td colspan="2"><div align="right"></div>

         <input type="submit" name="send" value="편지보내기">

    </tr>

  </table>

</form>

=====  PHP파일은 아래와 같습니다. =====

<?

$headers .= "From :$name<$e_mail>\r\n";

$heasers .= "X-Mailer:PHP MAILER\r\n";

if($upfile && $upfile_size)

{

        $filename=basename($upfile_name);

        $result=fopen($upfile,"r");

        $file=fread($result,$upfile_size);

        fclose($result);

        $upfile_type = "application/octet-stream";

        $boundary = "--------". uniqid("part");

        $headers .= "MIME-Version: 1.0 \r\n";

        $headers .= "Content-Type: multipart/mixed;        boundary=\"$boundary\"";

        $body .= "This is a multi-part message in MIME format.\r\n\r\n";

        $body .= "--$boundary\r\n";

        $body .= "Content-Type: text/html; charset=euc-kr\r\n";

        $body .= "Content-Transfer-Encoding: 8bit\r\n\r\n";

        $body .= nl2br(stripslashes($contents))."\r\n\r\n";

        $body .= nl2br(stripslashes($phpworld))."\r\n\r\n";

        $body .= "--$boundary\r\n";

        $body .= "Content-Type: $upfile_type; name=\"$filename\"\r\n";

        $body .= "Content-Transfer-Encoding: base64\r\n\r\n";

        $body .= ereg_replace("(.{80})","\\1\r\n",base64_encode($file));

}

else

{

        $body = stripslashes($contents). "\r\n\r\n";

}

mail("[email protected]",$subject,$contents,$headers); 

?> 

이렇게  소스를 작성하고요 

sendmail.php 에서 

<?php

if($_POST){

print_r($_POST);

}else{

echo 'post변수가없습니다.';

}

?>

이렇게 날려보면 

Array ( [name] => 이름 [e_mail] => 이메일주소 [subject] => 제목 [contents] => 내용 [send] => 편지보내기 )

이렇게 날아오는데요.

왜  <input name="upfile" type="file" size="40"> 에서 파일첨부로 파일까지 넣어줬는데

sendmail 에선 파일내용을 못가져 올까요? 

|

답변 1개 / 댓글 1개

채택된 답변
+20 포인트
2015-07-13 (월) 16:49:53

php에서 파일은 $_POST 가 아니고 $_FILES 에 담깁니다.

http://php.net/manual/kr/reserved.variables.files.php

http://deuxism.tistory.com/22

참고해보세요.

답변에 대한 댓글 1개

큰도움 되었습니다 정보 감사합니다 ^^

답변을 작성하려면 로그인이 필요합니다.