폼메일을 이용한 메일보내기를 PHP로 짜고있는데
메일은 오는데 첨부파일이 안와요.ㅠ
제가 짠 PHP소스입니다.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="euc-kr">
</head>
<body>
<?
function message($message)
{
echo "
<>
window.alert("$message");
history.go(-1);
</>
";
exit;
}
//메일 보낼때 필요사항
$charset='euc-kr'; // 문자셋 : UTF-8
$toEmail = "test123134@naver.com";
$toName="BestMetal"; // 받는이 이름
$fromName = $_POST['customer_name'];
$fromEmail = $_POST['email'];
$subject = "상담내용이 접수되었습니다";
//내용에 들어갈 것들
$company = $_POST['customer_company'];
$cp1 = $_POST['cp1'];
$cp2 = $_POST['cp2'];
$cp3 = $_POST['cp3'];
$content = $_POST['content'];
$company = iconv('utf-8', 'euc-kr//TRANSLIT', $company);
$cp1 = iconv('utf-8', 'euc-kr//TRANSLIT', $cp1);
$cp2 = iconv('utf-8', 'euc-kr//TRANSLIT', $cp2);
$cp3 = iconv('utf-8', 'euc-kr//TRANSLIT', $cp3);
$content = iconv('utf-8', 'euc-kr//TRANSLIT', $content);
$fromName = iconv('utf-8', 'euc-kr//TRANSLIT', $fromName);
$body = "
<html>
<head><meta http-equiv='Content-Type' content='text/html' charset='euc-kr'></head>
<body>
회 사 명 : $company <br/>
휴 대 폰 : $cp1-$cp2-$cp3 <br/>
남 긴 말 : $content
</body>
</html>";
if(!$fromName)message("이름을 입력하세요");
if(!$toEmail)message("보내는 사람의 메일을 적으세요");
if(!$fromEmail)message("받는 사람의 메일을 적으세요");
if(!$subject)message("제목을 적으세요");
if(!$body)message("내용을 적으세요");
if(!$company)message("회사명을 입력하세요");
if(!$cp3)message("전화번호를 모두 입력해주세요");
/* 인코딩 과정 */
$encoded_subject="=?".$charset."?B?".base64_encode($subject)."?=n"; // 인코딩된 제목
$to= ""=?".$charset."?B?".base64_encode($toName)."?=" <".$toEmail.">" ; // 인코딩된 받는이
$from= ""=?".$charset."?B?".base64_encode($fromName)."?=" <".$fromEmail.">" ; // 인코딩된 보내는이
/* mail()함수에서 쓰게될 변수 */
$headers="MIME-Version: 1.0n".
"Content-Type: text/html; charset=".$charset."; format=flowedn".
// "To: ". $to ."n". */
"From: ".$from."n".
"Return-Path: ".$from."n";
//첨부파일이 있는경우
if($customer_file!=""){
$tempname = $_FILES['customer_file']['tmp_name'];
$filename = $_FILES['customer_file']['name'];
$filetype = $_FILES['customer_file']['type'];
$fp = fopen($tempname, "r");
$file = fread($fp, $_FILES['customer_file']['size']);
fclose($fp);
@unlink($tmpname);
$boundary = "--------" . uniqid("part");
$headers .= "Content-Type: multipart/mixed; boundary="$boundary"";
//파일첨부파트
$body .= "rn--$boundaryrn";
$body .= "Content-Type: $filetype; name="$filename"rn";
$body .="Content-Transfer-Encoding: base64rn";
$body .= "Content-Dis attachment; filename="$filename"rnrn";
$body .= chunk_split( base64_encode($file) )."rn";
}
/* 줄의 끝에 붙어 있는 슬래쉬를 제거하는 함수 */
$bodytest=stripslashes($body);
/* 메일을 보내주는 함수 */
$retVal = mail($to, $encoded_subject, $bodytest, $headers);
if(!$retVal
)
message("편지 발송이 실패하였습니다");
else
message("편지가 발송되었습니다.");
?>
</body>
</html>
폼에서 첨부파일을 추가하던 안하던
제가 짠 내용대로 메일은 오는데 첨부파일이 안오네요.ㅠ
소스좀 봐주세요!!
메일은 오는데 첨부파일이 안와요.ㅠ
제가 짠 PHP소스입니다.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html" charset="euc-kr">
</head>
<body>
<?
function message($message)
{
echo "
<>
window.alert("$message");
history.go(-1);
</>
";
exit;
}
//메일 보낼때 필요사항
$charset='euc-kr'; // 문자셋 : UTF-8
$toEmail = "test123134@naver.com";
$toName="BestMetal"; // 받는이 이름
$fromName = $_POST['customer_name'];
$fromEmail = $_POST['email'];
$subject = "상담내용이 접수되었습니다";
//내용에 들어갈 것들
$company = $_POST['customer_company'];
$cp1 = $_POST['cp1'];
$cp2 = $_POST['cp2'];
$cp3 = $_POST['cp3'];
$content = $_POST['content'];
$company = iconv('utf-8', 'euc-kr//TRANSLIT', $company);
$cp1 = iconv('utf-8', 'euc-kr//TRANSLIT', $cp1);
$cp2 = iconv('utf-8', 'euc-kr//TRANSLIT', $cp2);
$cp3 = iconv('utf-8', 'euc-kr//TRANSLIT', $cp3);
$content = iconv('utf-8', 'euc-kr//TRANSLIT', $content);
$fromName = iconv('utf-8', 'euc-kr//TRANSLIT', $fromName);
$body = "
<html>
<head><meta http-equiv='Content-Type' content='text/html' charset='euc-kr'></head>
<body>
회 사 명 : $company <br/>
휴 대 폰 : $cp1-$cp2-$cp3 <br/>
남 긴 말 : $content
</body>
</html>";
if(!$fromName)message("이름을 입력하세요");
if(!$toEmail)message("보내는 사람의 메일을 적으세요");
if(!$fromEmail)message("받는 사람의 메일을 적으세요");
if(!$subject)message("제목을 적으세요");
if(!$body)message("내용을 적으세요");
if(!$company)message("회사명을 입력하세요");
if(!$cp3)message("전화번호를 모두 입력해주세요");
/* 인코딩 과정 */
$encoded_subject="=?".$charset."?B?".base64_encode($subject)."?=n"; // 인코딩된 제목
$to= ""=?".$charset."?B?".base64_encode($toName)."?=" <".$toEmail.">" ; // 인코딩된 받는이
$from= ""=?".$charset."?B?".base64_encode($fromName)."?=" <".$fromEmail.">" ; // 인코딩된 보내는이
/* mail()함수에서 쓰게될 변수 */
$headers="MIME-Version: 1.0n".
"Content-Type: text/html; charset=".$charset."; format=flowedn".
// "To: ". $to ."n". */
"From: ".$from."n".
"Return-Path: ".$from."n";
//첨부파일이 있는경우
if($customer_file!=""){
$tempname = $_FILES['customer_file']['tmp_name'];
$filename = $_FILES['customer_file']['name'];
$filetype = $_FILES['customer_file']['type'];
$fp = fopen($tempname, "r");
$file = fread($fp, $_FILES['customer_file']['size']);
fclose($fp);
@unlink($tmpname);
$boundary = "--------" . uniqid("part");
$headers .= "Content-Type: multipart/mixed; boundary="$boundary"";
//파일첨부파트
$body .= "rn--$boundaryrn";
$body .= "Content-Type: $filetype; name="$filename"rn";
$body .="Content-Transfer-Encoding: base64rn";
$body .= "Content-Dis attachment; filename="$filename"rnrn";
$body .= chunk_split( base64_encode($file) )."rn";
}
/* 줄의 끝에 붙어 있는 슬래쉬를 제거하는 함수 */
$bodytest=stripslashes($body);
/* 메일을 보내주는 함수 */
$retVal = mail($to, $encoded_subject, $bodytest, $headers);
if(!$retVal
)
message("편지 발송이 실패하였습니다");
else
message("편지가 발송되었습니다.");
?>
</body>
</html>
폼에서 첨부파일을 추가하던 안하던
제가 짠 내용대로 메일은 오는데 첨부파일이 안오네요.ㅠ
소스좀 봐주세요!!
그래서 customer_file의 값은 뭔데?
음..ㅠ customer_file 값은 HTML문서에 input type = file 으로 파일 추가하면 값을 넘겨받아요.ㅎ
첨부된 파일이 존재하는지 체크는 해봤음? 위에 소스중에 첨부파일이 있는경우... 라고 써있는 if문 안으로 정상 진입하는지 체크해보삼
음.ㅎ 첨부파일 if 걸리는지는 체크했어요.ㅎ 혹시 몰라서 if안에 메세지 넣어서 메일이 오는지는 확인했거든요.ㅎ