묻고답하기

안녕하세요

전 html이랑 css정도만 읽을 줄 아는 초보인데, 검색해보니 php파일을 수정해야 하는것 같아서 도움을 요청합니다.

어느 분이 블로그(http://likeme.pe.kr/145)에서 제공해주신 익스텐션 프로그램(SupportFormCreator.mxp)으로 폼메일을 만들었는데요

다른건 다 괜찮은데 메일이 도착하면(한메일) 본문이외에 이름, 제목등 한글로 써져야 하는 부분이 깨져서 들어옵니다. 본문내용은 한글로 잘 나오구요,

제가 테스트한다고 했을 때 영어로만 보내봐서 뒤늦게 알게 됐거든요 영어로는 잘 나옵니다.

html파일은 <meta charset="UTF-8">로 작성했습니다

javascript랑 php를 읽을 줄을 몰라서 다른 질문들을 참고해서는 수정을 할 수가 없습니다 ㅠㅠ

 

익스텐션을 써서 만들어진 php파일 코드입니다. 길어서 죄송합니다. 부디 어디를 고치면 될지 아시는 분은 답변 부탁드립니다!!

<?
// SMTP Params
global $gSMTPServer, $gSMTPLogin, $gSMTPPassword, $gEmailto, $gTestCaptcha, $gOKMessage;
$gSMTPServer = "";
$gSMTPLogin = "";
$gSMTPPassword = "";
$gEmailto = "qdesign@hanmail.net";
$gTestCaptcha = false;
$gOKMessage = "Success! Your Email has been sent.";
?>
<?
  session_start();
    function ShowMessage($msg) {
        echo '<div align="center">';
        echo $msg;
        echo '<br><br><a href="javascript: history.back()"><- Go to previous page></a>';
        echo '</div>';
    }

    function ShowMessageRef($msg) {
        echo '<div align="center">';
        echo $msg;
        echo '<br><br><a href="'.$_SERVER['HTTP_REFERER'].'"><- Go to previous page></a>';
        echo '</div>';
    }
    
    function SMTPmail($server, $login, $password, $emailto, $subject, $message, $from) {
        function get_data($smtp_conn)
        {
          $data="";
          while($str = @fgets($smtp_conn,515)) 
          {
            $data .= $str;
            if(substr($str,3,1) == " ") { break; }
          }
          return $data;
        }    

        $headers = "To: $emailto\nFrom: $from\nSubject: $subject\nX-Mailer: The Bat! (v3.99.3) Professional\n";
        $smtp_conn = @fsockopen($server, 25, &$errno, &$errstr, 30);
        if (!$smtp_conn) {
            return "Server $server. Connection failed: $errno";
        }
        $data = get_data($smtp_conn); 
        
        $serverdomainarray = explode('.', $server);
        $serverdomainarraycount = count($serverdomainarray);
        $serverdomain = $serverdomainarray[$serverdomainarraycount - 2].".".$serverdomainarray[$serverdomainarraycount - 1];
        
        fputs($smtp_conn,"HELO $serverdomain\r\n");
        $data = get_data($smtp_conn);
        if($data != 250) {fclose($smtp_conn); return 'SMTP server HELO command error.';}
        
        fputs($smtp_conn,"AUTH LOGIN\r\n");
        $data = get_data($smtp_conn);
        if($data != 334) {fclose($smtp_conn); return 'SMTP server AUTH command error.';}
        
        fputs($smtp_conn,base64_encode($login)."\r\n");
        $data = get_data($smtp_conn);
        if($data != 334) {fclose($smtp_conn); return 'SMTP server login failed.';}
        
        fputs($smtp_conn,base64_encode($password)."\r\n");
        $data = get_data($smtp_conn);
        if($data != 235) {fclose($smtp_conn); return 'SMTP server incorrect password.';}

        fputs($smtp_conn,"MAIL FROM: $login@$serverdomain\r\n");
        $data = get_data($smtp_conn);
        if($data != 250) {fclose($smtp_conn); return 'SMTP server MAILFROM command error.';}
        
        fputs($smtp_conn,"RCPT TO: $emailto\r\n");
        $data = get_data($smtp_conn);
        if($data != 250) {fclose($smtp_conn); return 'SMTP server RCPT TO command error.';}
    
        fputs($smtp_conn,"DATA\r\n");
        $code = substr(get_data($smtp_conn),0,3);
        if($code != 354) {fclose($smtp_conn); return 'SMTP server DATA sending error.';}

        fputs($smtp_conn,$headers."\r\n".$message."\r\n.\r\n");
        $code = substr(get_data($smtp_conn),0,3);
        if($code != 250) {fclose($smtp_conn); return 'SMTP server HEADER sending error.';}

        fputs($smtp_conn,"\n.\nQUIT\n");
        $data = get_data($smtp_conn);
        fclose($smtp_conn);
        return 'OK';
    }
    
    // PHPMailer
    function CallPHPMailer($sendmethod) {
        global $gTestCaptcha;
        if (($gTestCaptcha == true)&&(empty($_POST['captcha']) || ($_POST['captcha'] != $_SESSION['random_number']))) {
            ShowMessage('ERROR!<br>Verification code is incorrect.');
            exit();
        }        
        if (empty($_POST['cname'])) {
            ShowMessage('ERROR!<br>Enter correct name.');
            exit();
        }
        if (empty($_POST['email']) || !preg_match("/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $_POST['email'])) {
            ShowMessage('ERROR!<br>Enter correct email.');
            exit();        
        }
        
        $cname = substr($_POST['cname'], 0, 50);
        $cname = trim($cname);
        $cname = htmlspecialchars(stripslashes($cname));        
        $email = substr($_POST['email'], 0, 50);
        $email = trim($email);
        $email = htmlspecialchars(stripslashes($email));            
        $subject = substr($_POST['subject'], 0, 50);
        $subject = trim($subject);
        $subject = htmlspecialchars(stripslashes($subject));                
        $message = substr($_POST['message'], 0, 4096);
        $message = trim($message);
        $message = htmlspecialchars(stripslashes($message));            
        
        global $gSMTPServer, $gSMTPLogin, $gSMTPPassword, $gEmailto, $gOKMessage;
        if ($sendmethod == 'sendmail') {
            if (mail($gEmailto, $subject, $message, 'From: "'.$cname.'" <'.$email.'>')) {
                ShowMessageRef($gOKMessage);
            } else {
                ShowMessageRef('Error during message sending.');
            }
        } else if ($sendmethod == 'SMTP') {
            $result = SMTPmail($gSMTPServer, $gSMTPLogin, $gSMTPPassword, $gEmailto, $subject, $message, 'From: "'.$cname.'" <'.$email.'>');
            if ($result == 'OK') {
                ShowMessageRef($gOKMessage);                
            } else {
                ShowMessageRef($result);
            }
        }
    }
    
    // AjaxMailer
    function CallAJAXMailer($sendmethod) {    
        function MakeExit($vsStatus, $vsErrors) {
            header('Content-Type: text/xml');
            echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';

            echo '<resultset>';
            echo '<status>'.$vsStatus.'</status>';
            if ($vsErrors <> '') {
                echo '<errors>'.$vsErrors.'</errors>';
            }
            echo '</resultset>';    
            exit();
        }
            
        function cleanPosUrl ($str) {
            $nStr = $str;
            $nStr = str_replace("**am**","&",$nStr);
            $nStr = str_replace("**pl**","+",$nStr);
            $nStr = str_replace("**eq**","=",$nStr);
            return stripslashes($nStr);
        }

        $cname = substr(cleanPosUrl($_POST['posName']), 0, 50);
        $cname = trim($cname);
        $cname = htmlspecialchars(stripslashes($cname));        
        $email = substr(cleanPosUrl($_POST['posEmail']), 0, 50);
        $email = trim($email);
        $email = htmlspecialchars(stripslashes($email));            
        $subject = substr(cleanPosUrl($_POST['posSubject']), 0, 50);
        $subject = trim($subject);
        $subject = htmlspecialchars(stripslashes($subject));                
        $message = substr(cleanPosUrl($_POST['posMessage']), 0, 4096);
        $message = trim($message);
        $message = htmlspecialchars(stripslashes($message));    
        $captcha = substr(cleanPosUrl($_POST['posCaptcha']), 0, 50);
        $captcha = trim($captcha);
        $captcha = htmlspecialchars(stripslashes($captcha));        
        
        $posErrors = '';
        
        global $gTestCaptcha;
        if (($gTestCaptcha == true)&&(empty($captcha) || ($captcha != $_SESSION['random_number']))) {
            $posErrors .= '<li>Verification code is incorrect!</li>';
            $posErrors = '<![CDATA['.$posErrors.']]>';
            MakeExit('CAPTCHAERROR', $posErrors);
        }    
        
        if (empty($cname)) {
            $posErrors .= '<li>Enter correct name</li>';
        }
        if (empty($email) || !preg_match("/^[-\w.]+@([A-z0-9][-A-z0-9]+\.)+[A-z]{2,4}$/", $email)) {
            $posErrors .= '<li>Enter correct email</li>';    
        }
        
        if ($posErrors <> '')
            $posErrors = '<![CDATA['.$posErrors.']]>';
        
        if ($posErrors <> '') 
            MakeExit('ERRORS', $posErrors);
        
        global $gSMTPServer, $gSMTPLogin, $gSMTPPassword, $gEmailto;        
        if ($sendmethod == 'sendmail') {
            if (mail($gEmailto, $subject, $message, 'From: "'.$cname.'" <'.$email.'>')) {
                MakeExit('OK', '');
            } else {
                MakeExit('NOTOK', '');
            }
        } else if ($sendmethod == 'SMTP') {
            $result = SMTPmail($gSMTPServer, $gSMTPLogin, $gSMTPPassword, $gEmailto, $subject, $message, 'From: "'.$cname.'" <'.$email.'>');
            if ($result == 'OK') {
                MakeExit('OK', '');    
            } else {
                MakeExit('ERRORS', '<![CDATA[<li>'.$result.'</li>]]>');
            }
        }                
    }
    
    // Main
    if (isset($_GET['action'])) 
        if ($_GET['action'] == 'getCaptcha') {
            header('Pragma: no-cache');
            header('Expires: -1');
            header('Cache-control: no-cache');
            $_SESSION['random_number']=rand(1000, 9999);
            $number=$_SESSION['random_number'];
            header ("Content-type: image/png");
            $im = @imagecreatetruecolor(60, 19)
                     or die("Cannot Initialize new GD image stream");
            $text_color = imagecolorallocate($im, 199, 224, 212);
            $text_color1 = imagecolorallocate($im, 0, 0, 0);
            $background = imagecolorallocate($im, 121, 179, 11);
            $e=imagefilledrectangle ( $im, 0, 0,100, 50, $background);
            imagestring($im, 8, 2, 2,  $number, $text_color);
            imagestring($im, 8, 4, 4,  $number, $text_color1);
            imagegif($im);
            imagedestroy($im);    
            exit();
    }
    if (isset($_GET['tech']) && isset($_GET['method'])) {
        if ($_GET['tech'] == 'php') {
            CallPHPMailer($_GET['method']);
        } else if ($_GET['tech'] == 'ajax') {
            CallAJAXMailer($_GET['method']);
        }
    }
?>

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
궁시렁궁시렁 모듈(elfinderxe) 설치 후 설치된모듈 페이지에서 보이지 않습니다.  
apleshade xe로 대학 커뮤니티를 하나 만들까하는데요 [4] 2015.12.25 by 부산민지아빠
달봉이 홈페이지가 안되요? [1] 2015.12.25 by 부산민지아빠
라돌체 [xe files] 필요 없는 첨부파일 삭제할 수 있을까요? [1] 2015.12.25 by sejin7940
솔파도 회원정보에 포인트점수가 보이게 하려면 어떻게 하면 될까요? [1] 2015.12.25 by sejin7940
마루밑다락방 안녕하세요.. 그누보드5를 사용하다.... [1] 2015.12.24 by sejin7940
약방3호 xe 입문했습니다만.. [1] 2015.12.26 by 약방3호
스파모 이에러 어떻게 수정해야하나요? [1] file 2015.12.24 by 스파모
별쫑 브라우저에 따른 다른 css 적용이..... [3] 2015.12.24 by 별쫑
지은 폼메일로 메일을 보내면 한글이 깨집니다 ㅜㅠ  
땡이누나 게시판에 글올릴때 테이블을 삽입하면 선이 없어지는 현상? [1] file 2015.12.24 by Donza
웅돌 고급메일 모듈에 대해서..  
성혀니맘 xedition에서 css파일 중 min.css파일이 없습니다.. [5] 2015.12.24 by 성혀니맘
솔파도 갑자기 위젯 추가후 저장이 안되네요! [1] 2015.12.23 by kang154123
kang154123 ReWrite 관련 에러로 추정 - 414 Request-URI Too Large  
geoever XE 1.8.14에서 글 등록이 안 됩니다. [8] 2015.12.23 by kang154123
보고 댓글이 어느정도 작성되면 타이핑보다 늦어지는 형상(버벅거림)  
nfreerin 페이지 로딩시 특정 드롭다운 메뉴의 서브 메뉴가 잠시 출력되는 문제 [3] 2015.12.23 by DoorWeb
땀모 phpmyadmin에서 데이터내용을 삭제하려고하는데 수정/삭제가 안나옵니다. [2] file 2015.12.23 by 땀모
키필 다음과 같은 결제페이지를 어떻게 만들까요? [1] 2015.12.23 by 기진곰
세상의모든계산기 ckeditor 에서 SHIFT+ENTER 로 줄바꿈(BR)시 한글 깨짐 현상  
Donza 기본 쪽지 알림 작동 안하는 문제  
블링크 스케치북게시판 확장변수중 라디오버튼의 정렬방법 여쭤봅니다. [6] file 2015.12.23 by 블링크
hellojdy 모바일 로그인 폼은 어디서 수정하나요?? [2] 2015.12.23 by hellojdy
hellojdy 스케치북게시판에 특정문구(판매완료)가 보이게하는법 [1] 2015.12.23 by hellojdy
Donza 레벨아이콘 표시 애드온 켜면 로그인시 500오류 [5] 2015.12.23 by Donza
게임보이 index 위젯 페이지 수정, 노출 영역 위치 변경이 가능한가요? file  
scew xe초보입니다! 행사페이지를 만드려고하는데요. [2] 2015.12.23 by 퍼니엑스이
별호 문의합니다. [3] file 2015.12.23 by 다미아빠
파플 게시글 수정이 안됩니다. [1] 2015.12.23 by ben****0efa3