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("*** 개인정보보호를 위한 이메일주소 노출방지 ***",$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
php에서 파일은 $_POST 가 아니고 $_FILES 에 담깁니다.
http://php.net/manual/kr/reserved.variables.files.php
참고해보세요.