폼메일 한글깨짐 문의드려요~
본문
폼메일로 문의글 받으려고 하는데요 ㅜㅜ
왜 메일에서 받으면 한글이 깨져 보이는거죠? ㅜㅜ
아래 보고 문제점좀 알려주시면 감사하겠습니다.
그리거 스팸으로 들어가는데 이유좀 알수 있을까요?
<?
header("Content-type: text/html; charset=utf-8");
$up_dir = "./upload"; // 기본 업로드 폴더
$cname = $_POST['cname'];
$fromName = $_POST['cname'];
$choice = $_POST['choice'];
$tel1 = $_POST['tel1'];
$tel2 = $_POST['tel2'];
$tel3 = $_POST['tel3'];
$fromMail = $_POST['email'];
$subject = '진료문의';
$content = $_POST['content'];
$mailTo = "*** 개인정보보호를 위한 이메일주소 노출방지 ***";
// 구분자 생성
$boundary = "----" . uniqid("part");
// HEADER 생성
$header = "";
$header .= "Return-Path: $fromMail\r\n"; // 반송 메일 주소
$header .= "from: ".$fromName." <$fromMail>\r\n"; // 보내는 사람 이름, 메일주소
// 첨부파일이 있는 경우
if(isset($_FILES['upfile']['tmp_name']) && $_FILES['upfile']['tmp_name']){
$file_name = time() . "_" . $_FILES['upfile']['name'];
$ext = strtolower(substr($file_name, (strrpos($file_name, '.') + 1)));
$save_dir = sprintf('%s/%s', $up_dir, $file_name);
$save_url = sprintf('%s/%s', $up_url, $file_name);
move_uploaded_file($_FILES["upfile"]["tmp_name"],$save_dir);
}
// HEADER 작성
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: Multipart/alternative; boundary = \"$boundary\"";
// 메일 내용
$mailcontent = "";
$mailcontent .= "<table width='700' cellpadding='0' cellspacing='0' style='border:1px solid #cccccc;'>";
$mailcontent .= "<tr><td height='30' bgcolor='#f0f0f0' align='left'> 이름</td><td width='600'> ".$fromName."</td></tr>";
$mailcontent .= "<tr><td height='30' bgcolor='#f0f0f0' align='left'> 이벤트</td><td width='600'> ".$choice."</td></tr>";
$mailcontent .= "<tr><td colspan='2' style='height:1px;background:#ccc;'></td></tr>";
$mailcontent .= "<tr><td height='30' bgcolor='#f0f0f0' align='left'> 전화번호</td><td width='600'> ".$tel1."-".$tel2."-".$tel3."</td></tr>";
if($file_name){
$mailcontent .= "<tr><td colspan='2' style='height:1px;background:#ccc;'></td></tr>";
$mailcontent .= "<tr><td height='30' bgcolor='#f0f0f0' align='left'> 첨부파일</td><td width='600'> <a href='http://chubascocompany.com/web/upload".$file_name."'>".$file_name."</a></td></tr>";
}
$mailcontent .= "</table>";
// 본문
$mailbody = "";
$mailbody .= "--$boundary\r\n";
$mailbody .= "Content-Type: text/html; charset=euckr\r\n";
$mailbody .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$mailbody .= nl2br($mailcontent) . "\r\n";
$mailbody .= "--$boundary--\r\n\r\n";
$result = mail($mailTo,$subject,$mailbody,$header);
if($result){
$msg = "상담신청완료, 감사합니다. 확인후 연락드리겠습니다. ";
//$msg = iconv("ANSI","utf-8",$msg);
//$msg = iconv("UTF-8", "EUC-KR", $msg);
//echo $msg;
//exit;
//$encoding = mb_detect_encoding($msg,array("UTF-8","EUC-KR"));
//echo $encoding;
//exit;
echo "<script>
alert('".$msg."');
history.back(-1);
</script>";
}
else {
$msg = "메일 보내기 실패, 고객센터로 문의 주시기 바랍니다.";
//$msg = iconv("utf-8","euc-kr",$msg);
echo "<script>
alert('$msg');
history.back(-1);
</script>";
}
?>
답변 2
일단은 현재 php 문서 파일을 저장할때 UTF-8로 저장했는지 확인하시고요.
소스 중에서는
$mailbody .= "Content-Type: text/html; charset=euckr\r\n";
부분을
$mailbody .= "Content-Type: text/html; charset=utf-8\r\n";
로 변경해 보시고요.
현재 사이트가 웹호스팅을 받고 있는 사이트라면 업체에 확인해 보시고요.
개인 컴퓨터에서 도메인을 운영하신다면
화이트 도메인으로 추가해서 스팸으로 처리되는 것을 막아야 할 겁니다.
화이트 도메인 추가는 아래의 링크를 참조하세요.
메일 한글깨지는 문제는 인코딩 문제로 보여지며
스팸으로 가는이유는 화이트도메인을 등록해 주셔야 합니다.