폼메일 소스를 갖다 썼는데 글시가 깨져요~ ㅠ

폼메일 소스를 갖다 썼는데 글시가 깨져요~ ㅠ

QA

폼메일 소스를 갖다 썼는데 글시가 깨져요~ ㅠ

본문

견적문의 폼이 필요해서 소스를 찾다가 아래 소스를 발견하여 적용시켰습니다~

다른 부분은 다 잘 나오는데 현재 사이트 언어가 utf-8 이고 아래 소스는 언어버전이 euc-kr로 되어 있거든요~

 

그래서 아래 소스의 euc-kr​를 utf-8 ​로 바꾸어 폼을 보내면 메일에 제목이 드문드문 잘려나오고

euc-kr​를 그대로 쓰니 모바일에서 메일 확인할때 제목이 또 깨져나오네요~ ㅠ

 

어떻게 방법이 없을까요?

그누보드 내에 있는 폼메일을 사용하려했는데 메일전송이 안되어 겨우 소스 찾았더니 제목이 자꾸 깨지네요~

능력있는 분들께서 좀 도와주세요~!!!

 

<아래 소스는 한  파일에 내에서 작동하는 소스입니다~>

 

 

 

 

 

 

<?

// ####### 폼메일 '입력양식' and '발송코드' ########
 // 이것은 바로 사용 가능한 독립된 폼메일 소스입니다.
 // 본 파일 내에서 [내용입력]->[메일발송]이 모두 완료됩니다.
 // php 파일이므로 웹서버에 직접 올려야 정상동작 합니다.

 // 메일 받는사람을 고정시키거나 추가할 수 있습니다.
 // 입력란 추가항목은 50개 이상 추가할 수 있습니다.
 // 별표(★) 표시된 설정항목 확인후 서버에 올려서 테스트 하십시오

 

 

 // [★ 설정 1] 스팸메일에 악용될 우려 때문에 기본상태는 메일발송 차단되게 되어 있으니
 // 본 파일을 실제 사용하려면 이 설정항에 'yes' 를 대입하십시오.
  $it_uses = "yes";


 // [★ 설정 2] 메일을 받을 사람을 특정인(관리자)으로 고정하려면 그 메일주소와  이름을 대입하십시오.
  $to_mail_set = @naver.com;  // 메일주소
  $to_name_set = "에프엔씨";  // 이름


 // [★ 설정 3] 메일전송 완료후의 출력페이지를 지정하려면 URL 주소 대입(기본상태는 메일 입력폼이 다시 출력됨)
  $after_url="$_SERVER[PHP_SELF]";

 

 if($_POST['f_mailsend']){

  // 메일발송
   send_mail_action($to_mail_set,$to_name_set);

  // [★ 설정 4] 메일 받을 사람을 여럿 추가하려면
  // send_mail_action("*** 개인정보보호를 위한 이메일주소 노출방지 ***","홍길동");
  // 위의 코드를 메일주소,이름만 바꿔서 여기에 반복해 넣어 주면 됨.


   alert_msg("Success!", $after_url = "/fc/mail_confirm.php");
 }

?>

 

 


<html>
 <head>
 <title>에프엔씨</title>
 <meta http-equiv='Content-Type' content='text/html; charset=euc-kr'>

 <style type='text/css'>
 @import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css);
 * {margin:0; padding:0;}
 body {margin:0; padding:0;  font-family:'Nanum Gothic'; font-size:13px; color:#666;}
  BODY,TD,TR,input,DIV,form,pre,select,textarea{ font-family:'Nanum Gothic'; font-size:13px; color:#666; word-break:break-all;}
  form{margin:0; padding:0; display:inline;}
  
  .table_form {width:705px; border-top:2px solid #666;}
  .table_form td {padding:9px 5px 9px 15px; border-bottom:1px solid #ddd;}
  .td_title {background:#fafafa; font-weight:bold;}
 </style>

 <script language=JavaScript>

  // [★ 설정 5] 입력여부 체크 - 입력확인 필요 없는 것은 삭제해도 됨
  function form_mail_submit(){

   if(no_value('mail_subject'))    return error_msg('mail_subject','제목을 입력하십시오.');
   if(no_value('mail_to_name'))    return error_msg('mail_to_name','받는사람 이름을 입력하십시오.');
   if(no_value('mail_from_name'))    return error_msg('mail_from_name','보낸사람 이름을 입력하십시오.');
   

   
   if(no_value('add_value_2'))    return error_msg('add_value_2','담당자명을 입력하십시오.');
   if(no_value('add_value_3'))    return error_msg('add_value_3','전화번호를 입력하십시오.');
   if(no_value('add_value_4'))    return error_msg('add_value_4','유체종류를 입력하십시오.');
   if(no_value('add_value_18'))    return error_msg('add_value_18','배관크기를 입력하십시오.');
   
   if(no_value('mail_body'))    return error_msg('mail_body','본문내용을 입력하십시오.');
   

   if(!document.MailWriteForm.mail_to_email.value.match(/\S+@\S+\.\S+/)) return error_msg('mail_to_email','받는사람 메일주소를 확인하십시오.');
   if(!document.MailWriteForm.mail_from_email.value.match(/\S+@\S+\.\S+/)) return error_msg('mail_from_email','보낸사람 메일주소를 확인하십시오.');
   document.MailWriteForm.submit();
  }
  function no_value(inputName){
   value=eval('document.MailWriteForm.'+inputName).value.replace(/\s/g,"");
   if(!value) return 1;
  }
  function error_msg(inputName,msg){
   alert(msg);
   eval('document.MailWriteForm.'+inputName).focus();
   return false;
  }

 </script>

 </head>

 <body bgcolor=#ffffff>

 

 


<!--------- 테두리 라운딩-------------------------------------------------------------->
<!--<table width="100%" border=0 align=left cellpadding=0 cellspacing=0>
<tr>
<td width=12 height=11 background='r1.gif'></td>
<td height=11 background='r2.gif'></td>
<td width=13 height=11 background='r3.gif'></td>
</tr>
<tr>
<td width=12 background='r4.gif'></td>
<td align=center style='padding:2;'>-->
<!--------- 테두리 라운딩-------------------------------------------------------------->

 

 

 

<FORM method='post' name="MailWriteForm" action="<?=$_SERVER['PHP_SELF']?>">
 <input type=hidden name='f_mailsend' value='1'>

 <table width=705 border=0 cellpadding=0 cellspacing=0  class="table_form">

  <tr>
   <td colspan=4 bgcolor=#f5f5f5 style='color:#b25b5b; font-weight:bold;'>  * 는 필수입력사항입니다<b></b></td>
  </tr>

  


<? // '설정2' 에서 메일받을 사람을 설정했다면 받는사람 이름/메일 입력칸은 출력안함
   if($to_mail_set and $to_name_set){
    echo "<input type=hidden name='mail_to_email' value='$to_mail_set'>";
    echo "<input type=hidden name='mail_to_name' value='$to_name_set'>";
   }else{
?>

  <tr>
   <td width="20%" bgcolor=#f7f7f7> 받는 사람 이름</td>
   <td colspan="3"><input type=text name='mail_to_name' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
  <tr>
   <td> 받는 사람 메일주소</td>
   <td colspan="3"><input type=text name='mail_to_email' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
  

<?}?>


  <tr>
   <td width="20%" class="td_title"> * 제목</td>
   <td><input type=text name='mail_subject' style='border:1px solid #ddd; width:150px;'></td>
   <td class="td_title">요청서 번호</td>
   <td><input type=hidden name='add_title_1' value="요청서 번호">
   <input type=text name='add_value_1' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
       
  <tr>
   <td class="td_title"> * 회사명</td>
   <td width="30%"><input type=text name='mail_from_name' style='border:1px solid #ddd; width:150px;'></td>
   <td width="20%" class="td_title">* 담당자명</td>
   <td><input type=hidden name='add_title_2' value="담당자명">
   <input type=text name='add_value_2' style='border:1px solid #ddd; width:150px;'></td>
  </tr>

  <tr>
   <td class="td_title">* 메일주소</td>
   <td><input type=text name='mail_from_email' style='border:1px solid #ddd; width:150px;'></td>
   <td class="td_title">* 전화번호</td>
   <td><input type=hidden name='add_title_3' value="전화번호">
   <input type=text name='add_value_3' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
       
        <tr>
   <td class="td_title">* 유체종류</td>
   <td><input type=hidden name='add_title_4' value="유체종류">
   <input type=text name='add_value_4' style='border:1px solid #ddd; width:150px;'></td>
   <td class="td_title">부식성</td>
   <td>
            <input type=hidden name='add_title_5' value="부식성">
            <input type="radio" name="add_value_5" value="Yes" /> Yes         <input type="radio" name="add_value_5" value="No" /> No</td>
  </tr>
       
        <tr>
   <td class="td_title">유량</td>
   <td colspan="3"><input type=hidden name='add_title_6' value="유량-최대">
      최대 <input type=text name='add_value_6' style='border:1px solid #ddd; width:100px;'>    
           
            <input type=hidden name='add_title_7' value="유량-사용">
      사용 <input type=text name='add_value_7' style='border:1px solid #ddd; width:100px;'>    
           
            <input type=hidden name='add_title_8' value="유량-최소">
      최소 <input type=text name='add_value_8' style='border:1px solid #ddd; width:100px;'>    
            </td>
    </tr>
         
          <tr>
   <td class="td_title">온도</td>
   <td colspan="3"><input type=hidden name='add_title_9' value="온도-최대">
      최대 <input type=text name='add_value_9' style='border:1px solid #ddd; width:100px;'>    
           
            <input type=hidden name='add_title_10' value="온도-사용">
      사용 <input type=text name='add_value_10' style='border:1px solid #ddd; width:100px;'>    
           
            <input type=hidden name='add_title_11' value="온도-최소">
      최소 <input type=text name='add_value_11' style='border:1px solid #ddd; width:100px;'>    
            </td>
    </tr>
         
          <tr>
   <td class="td_title">압력</td>
   <td colspan="3"><input type=hidden name='add_title_12' value="압력-최대">
      최대 <input type=text name='add_value_12' style='border:1px solid #ddd; width:100px;'>    
           
            <input type=hidden name='add_title_13' value="압력-사용">
      사용 <input type=text name='add_value_13' style='border:1px solid #ddd; width:100px;'>    
           
            <input type=hidden name='add_title_14' value="압력-최소">
      최소 <input type=text name='add_value_14' style='border:1px solid #ddd; width:100px;'>    
            </td>
    </tr>

  <tr>
    <td class="td_title">비중</td>
    <td><input type=hidden name='add_title_15' value="비중">
     <input type=text name='add_value_15' style='border:1px solid #ddd; width:150px;'></td>
    <td class="td_title">점도</td>
    <td><input type=hidden name='add_title_16' value="점도">
     <input type=text name='add_value_16' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
       
        <tr>
    <td class="td_title">배관재질</td>
    <td><input type=hidden name='add_title_17' value="배관재질">
     <input type=text name='add_value_17' style='border:1px solid #ddd; width:150px;'></td>
    <td class="td_title">* 배관크기</td>
    <td><input type=hidden name='add_title_18' value="배관크기">
     <input type=text name='add_value_18' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
       
        <tr>
    <td class="td_title">접속방법</td>
    <td><input type=hidden name='add_title_19' value="접속방법">
      <select size="1" name="add_value_19" onChange='changeinfo();' class=select1>
                 <option value="">선택하세요</option>
                 <option value="플랜지">플랜지</option>
                 <option value="나사">나사</option>
                 <option  value="기타">기타</option>
          </select>
                    </td>
    <td class="td_title">유체흐름방향</td>
    <td><input type=hidden name='add_title_20' value="유체흐름방향">
     <input type=text name='add_value_20' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
       
        <tr>
    <td class="td_title">공급전원</td>
    <td><input type=hidden name='add_title_21' value="공급전원">
     <input type=text name='add_value_21' style='border:1px solid #ddd; width:150px;'></td>
    <td class="td_title">출력신호</td>
    <td><input type=hidden name='add_title_22' value="출력신호">
     <input type=text name='add_value_22' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
       
        <tr>
    <td class="td_title">지시</td>
    <td><input type=hidden name='add_title_23' value="지시">
      <select size="1" name="add_value_23" onChange='changeinfo();' class=select1>
                 <option value="">선택하세요</option>
                 <option value="순간유량">순간유량</option>
                 <option value="적산유량">적산유량</option>
                 <option  value="순간+적산">순간+적산</option>
          </select>
                    </td>
    <td class="td_title">전송기</td>
    <td><input type=hidden name='add_title_24' value="전송기">
     <input type="radio" name="add_value_24" value="일체형" /> 일체형         <input type="radio" name="add_value_24" value="분리형" /> 분리형</td>
  </tr>
       
        <tr>
    <td class="td_title">판넬 인디케이터 필요여부</td>
    <td><input type=hidden name='add_title_25' value="판넬 인디케이터 필요여부">
     <input type="radio" name="add_value_25" value="Yes" /> Yes         <input type="radio" name="add_value_25" value="No" /> No
                    </td>
    <td class="td_title">수량</td>
    <td><input type=hidden name='add_title_26' value="수량">
     <input type=text name='add_value_26' style='border:1px solid #ddd; width:150px;'></td>
  </tr>
       

  


  

 


  <!-----[★ 설정 6] 입력란을 추가 하려면 아래와 같이 일련 숫자를 사용해 계속 추가해 주면 됨 ---->

  

 
  
  
  <!-----[★ 설정 6] 입력란을 추가 하려면 위와 같이 일련 숫자를 사용해 계속 추가해 주면 됨 ---->

 


  

 

  <!--- 본문 입력란 --->
  <tr>
   <td class="td_title">기타문의사항</td>
   <td colspan="3" align=center>
            <textarea name='mail_body'
    style="border:1px solid #ddd; width:100%; height:90px; overflow:auto; background-image:url('wrback.gif'); "></textarea>
            </td>
    </tr>

 </table>

 <br>

 <!--- 전송버튼 --->
 <p style="width:100%; text-align:center;"><a onClick="javascript:form_mail_submit()" style='cursor:pointer;'><img src="/img/btn_mail.gif" border=0></a></p>

</FORM>

 

 

 


<!--------- 테두리 라운딩-------------------------------------------------------------->
<!--</td>
<td width=13 background='r5.gif'></td>
</tr>
<tr>
<td width=12 height=11 background='r6.gif'></td>
<td height=11 background='r7.gif'></td>
<td width=13 height=11 background='r8.gif'></td>
</tr>
</table>-->
<!--------- 테두리 라운딩-------------------------------------------------------------->

 


<!--<pre style="line-height:150%;">

  <img src='arow.gif' align=absmiddle> <b>form_mail.php</b>
ㆍ이것은 바로 사용 가능한 독립된 폼메일 소스입니다.
ㆍ본 파일 내에서 [내용입력]->[메일발송]이 모두 완료됩니다.
ㆍphp 파일이므로 웹서버에 직접 올려야 정상동작 합니다.

ㆍ메일 받는사람을 고정시키거나 추가할 수 있습니다.
ㆍ입력란 추가항목은 50개 이상 추가할 수 있습니다.

ㆍ소스내의 설정항목 확인후 서버에 올려서 테스트 하십시오.


</pre>-->

</body>
</html>

 

 

 

 

 

<?


// 메일내용 html 구성
function mail_body_html($body){

 $join_html= <<<EOF_LINE


 <html>
  <head>
  <meta http-equiv='Content-Type' content='text/html; charset=euc-kr'>
  <style type=text/css>
   body,td,input,div,select,textarea{font-size:9pt; font-family:굴림,Tahoma; line-height:140%; word-break:break-all;}
  </style>
  </head>

  <body bgcolor='#ffffff' topmargin=5>


   <table width=500 border=0 cellspacing=0 cellpadding=0  style='margin-bottom:8px; border-bottom:1px solid #ddd; padding:5px;'>
   <tr>
     <td colspan="2" style='padding:9px; color:#ffffff; font-weight:bold; background:#4c5f75;'>
        $_POST[mail_subject]
      
     </td>
                </tr>
    <tr>
     <td width=120 style='border-bottom:1px solid #ddd; padding:15px 5px 5px 5px; background:#fafafa;'><b>ㆍ</b>회사명</td>
     <td style='border-bottom:1px solid #ddd; padding:5px;'> $_POST[mail_from_name]  <$_POST[mail_from_email]></td>
    </tr>
    <tr>
     <td width=120 style='border-bottom:1px solid #ddd; padding:5px; background:#fafafa;'><b>ㆍ</b>받은사람</td>
     <td style='border-bottom:1px solid #ddd; padding:5px;'> $_POST[mail_to_name]  <$_POST[mail_to_email]></td>
    </tr>

EOF_LINE;

   // 추가입력란 삽입
   for($i=1; $i<50; $i++){ // 입력추가항목이 50개 이상 된다면 '50'을 수정할것
    if(!$_POST['add_title_'.$i]) continue;
    $title=$_POST['add_title_'.$i];  $value=$_POST['add_value_'.$i];
    $join_html.="
      <tr>
       <td width=120 style='border-bottom:1px solid #ddd; padding:5px; background:#fafafa;'><b>ㆍ</b>$title</td>
       <td style='border-bottom:1px solid #ddd; padding:5px;'> $value</td>
      </tr>
     ";
   }

 $join_html.= <<<EOF_LINE
 
 <tr>
     <td style='border-bottom:1px solid #ddd; padding:5px; background:#fafafa;'>
      <!--메일 본문 내용-->
      <b>ㆍ</b>기타내용
     </td>
                    <td style='border-bottom:1px solid #ddd; padding:5px;'>
      <!--메일 본문 내용-->
      $body
     </td>
    </tr>

   </table>

   

  </body>
 </html>

EOF_LINE;

 return $join_html;

}

 

 

 


function send_mail_action($snd_mail,$snd_name){
 if($GLOBALS['it_uses'] != 'yes') alert_msg("메일발송 실패 했습니다. 소스내의 '설정항목1' 을 우선 확인하십시오.");

 if($snd_mail) $_POST['mail_to_email'] = $snd_mail;
 if($snd_name) $_POST['mail_to_name'] = $snd_name;

 if(!org_mail($_POST['mail_to_email'])) alert_msg('받는 사람 메일주소가 잘못 되었습니다.');
 if(!org_mail($_POST['mail_from_email'])) alert_msg('보내는 사람 메일주소가 잘못 되었습니다.');

 if(!$_POST['mail_subject']) alert_msg('제목을 입력하십시오.');
 if(!$_POST['mail_to_name']) alert_msg('받는사람 이름을 입력하십시오.');
 if(!$_POST['mail_from_name']) alert_msg('보낸사람 이름을 입력하십시오.');

 if(!$_POST['mail_body']) alert_msg('본문 내용을 입력하십시오.');

 $mail_to = "\"$_POST[mail_to_name]\" <$_POST[mail_to_email]>";
 $mail_from = "\"$_POST[mail_from_name]\" <$_POST[mail_from_email]>";

 $head  = "From:$_POST[mail_from_email]\n";
 $head .="Content-Type: text/html\n";
 $head .="Reply-To:$_POST[mail_from_email]\n";
 $head .="X-Mailer:PHP/".phpversion();

 $body=nl2br($_POST['mail_body']);
 $body=stripslashes($body);
 $body=mail_body_html($body);

 return @mail($mail_to,$_POST['mail_subject'],$body,$head);
}


function org_mail($mail){
 if(!preg_match("/\S+@(\S+\.\S+)/",$mail,$Tmp)) return ;
 // if(!checkdnsrr($Tmp[1], "MX") and !checkdnsrr($Tmp[1], "A")) return ;
 return 1;
}


function alert_msg($msg,$after_url=""){
 $msg=preg_replace("/\"/","'",$msg);
 echo " <script language='JavaScript'> alert(\"$msg\"); ";
 if($after_url) echo " location.href='$after_url'; ";
 else echo " history.go(-1); ";
 echo "</script>";
 exit;
}

 


?>​

이 질문에 댓글 쓰기 :

답변 3

문서캐릭터셋은 바꾸셨나요???

 

문서캐릭터셋과 메타캐릭터셋이 통일되야해요. 거기에 버추얼호스트의 케릭터셋도 euc-kr로 해놓고 문서랑 메타의 캐릭터셋을 utf-8이렇게 엉키게 해두시면 어디는잘나오고 어디는 깨지고 그래요.

 

케릭터셋을 통일해보세요.

<meta http-equiv='Content-Type' content='text/html; charset=euc-kr'>

이부분을

<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>

 로 바꾸신후 인코딩 utf-8 설정 해보셧나요 ? 

윗분들 말씀해주신 것처럼 euc-kr을 utf-8로 바꾸고 인코딩도 utf-8​로 변경후 올렸는데도 pc 메일 제목에선 '견적문의 테스트' 이런 제목이 '견 문' 이렇게 나오더라고요~

 

모바일에서 메일을 확인하면 제목 부분이 아예 이상한 아랍어 처럼 깨져서 나오고요~

방법이 없는건지~ ㅠ 정 안되면 다른 소스를 알아봐야 할 것 같아요 ㅠㅠ

 

드래곤된다 님, 익명닉네임 님, 답변 달아 주셔서 감사합니다~!!

답변을 작성하시기 전에 로그인 해주세요.
전체 123,673 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT