UTF-8 에서 폼메일 보낼때 글 깨짐 없애기.. 정보
UTF-8 에서 폼메일 보낼때 글 깨짐 없애기..본문
저만 그런가요.. UTF-8 버전을 사용하는데 글 작성자의 서브메뉴로 폼메일을 보낼때 보낸이와 제목, 그리고 내용까지 모두 깨져서 나오더군요..
그래서 하루 종일 검색을 해봤지만 저 같은 문제를 가지고 계신분이 없는듯 이에 해당하는 글을 못찾겠더군요..
그래서 이것저것 만져보다 결국 나름 해결을 했는데요..
bbs/formmail_send.php 내에 56번째줄쯤에..
mailer($fnick, $fmail, $to, $subject, $mail_content, $type, $file, $cfg[charset]); 이라는 부분이 있씁니다.
이것을 $cfg[charset] 을 빼고
mailer($fnick, $fmail, $to, $subject, $mail_content, $type, $file); 이렇게 작성하시면 됩니다.
저 삭제한 코드가 어떤 역활을 하는지는 정확히 모르겠으나, 우선 제가 확인한 바로는 네이버와 Gmail(utf-8)에서 문제없이 출력됬습니다.
초허접팁이라 맞는건지 잘 모르겠네요..
암튼 도움이 됬슴 좋겠습니다..
날씨 쌀쌀한데 감기 조심하세용~
그래서 하루 종일 검색을 해봤지만 저 같은 문제를 가지고 계신분이 없는듯 이에 해당하는 글을 못찾겠더군요..
그래서 이것저것 만져보다 결국 나름 해결을 했는데요..
bbs/formmail_send.php 내에 56번째줄쯤에..
mailer($fnick, $fmail, $to, $subject, $mail_content, $type, $file, $cfg[charset]); 이라는 부분이 있씁니다.
이것을 $cfg[charset] 을 빼고
mailer($fnick, $fmail, $to, $subject, $mail_content, $type, $file); 이렇게 작성하시면 됩니다.
저 삭제한 코드가 어떤 역활을 하는지는 정확히 모르겠으나, 우선 제가 확인한 바로는 네이버와 Gmail(utf-8)에서 문제없이 출력됬습니다.
초허접팁이라 맞는건지 잘 모르겠네요..
암튼 도움이 됬슴 좋겠습니다..
날씨 쌀쌀한데 감기 조심하세용~
추천
2
2
댓글 8개

오홍~ 제가 오늘 운이 좋은가보네요. 저도 어제 똑같은점을 발견하고 한참 들여다보고 건드려보다 말았는데;;ㅠ 암튼 이렇게 정보를 공유해주셔서 너무감사드립니다. 저같은 초보분들을 위해 적극 추천~!
UTF-8버전을 사용하신다면 charset = utf-8 이란 말인듯 싶군요...
따라서 메일을 보낼때 utf-8으로 보내게 돼어 일반 메일체크할때 깨져나오는듯 싶고요... ㅡ.ㅡa
따라서 $cfg[charset]을 지우시면 인코딩방식이 지정이 안돼서 이메일을 보내게 돼는듯...
지금껏 체크를 안해봤는데 저두 폼메일을 확인해봐야겠네요... ^^
따라서 메일을 보낼때 utf-8으로 보내게 돼어 일반 메일체크할때 깨져나오는듯 싶고요... ㅡ.ㅡa
따라서 $cfg[charset]을 지우시면 인코딩방식이 지정이 안돼서 이메일을 보내게 돼는듯...
지금껏 체크를 안해봤는데 저두 폼메일을 확인해봐야겠네요... ^^
아마도 버그가 아닐까 추정됩니다.
혹시라도 /lib/mailer.lib.php에 정의되어 있는 mailer함수의 문자셋이,
다음과 같이 $charset="EUC-KR로 지정되어 있는지 확인해 볼 필요가 큽니다.
/lib/mailer.lib.php에는 mailer함수(function)가 다음과 같이,
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="EUC-KR", $cc="", $bcc="")
$charset="EUC-KR"로 직접 언급되어 있습니다.
(물론, 이것은 utf-8으로 코딩된 버전이 아니며, 기존 배포버전처럼 euc-kr문자셋을 지원하는 배포버전 기준입니다.)
그런데, bbs/formmail_send.php 에는 mailer함수(function)가 뜬금없이,
$cfg[charset]과 같이 불려지고 있습니다.
즉, 정상적으로 라이브러리가 기재되어 있고,
실제 메일전송을 담당하는 /bbs 경로의 폼메일 파일에는 문자셋을 지정하는 위치에 $charset과 같이 기재했다면,
라이브러리 경로의 파일에서 기본으로 지정된 값을 끌어왔겠지요.
아마도, gnu3.xx버전의 mailer함수 형태를 그대로 끌어오다 보니 g4에서 차마 검토를 마치지 못해,
발생된 오류(검토 누락에 의한 오류)라고 보입니다.
한가지 참조할 만한 사항이라면,
gnu3.xx와 g4와의 환경설정(변수)에 따른 기본틀을 보자면,
$cfg[], $config[]과 같은 방식으로 차별화 되어 있다는 것입니다.
원 게시물 작성자께서 말씀하셨듯이,
$cfg[charset]를 제거할 경우 정상적인 이용이 가능하다고 하셨는데,
이것은 아마도 라이브러리 경로에서 euc-kr로 언급된 부분을 끌어왔기 때문이라고 보여집니다.
그런데... 여기서 발생되는 한가지 의문점은,
mailer함수에서 $cfg[charset]를 제거했을 경우,
정상적인 이용이 가능하다는 데 있습니다.
만약 그렇다면, 문자셋의 환경을 제거하기 이전의 환경(변수)값인 $cfg[charset]이
정상적으로 작동했다는 것이 되는데, 좀 더 자세한 검토가 필요할 것 같습니다.
-. 관련 파일 및 경로
/lib/mailer.lib.php (직접 관련)
/bbs/formmail_send.php (직접 관련)
/head.sub.php (간접 관련)
-. 참조사항
gnu3.xx의 메일러 함수 관련
/bbs/formmailsend.php에는 메일러 함수의 호출이 다음과 같이 정의되어 있으며,
mailer($fname, $fmail, $to, $subject, $mail_content, $type, $file, "EUC-KR");
/lib/mailer.lib.php 에는
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="EUC-KR", $cc="", $bcc="")
~과 같이 기재되어 있습니다.
혹시라도 /lib/mailer.lib.php에 정의되어 있는 mailer함수의 문자셋이,
다음과 같이 $charset="EUC-KR로 지정되어 있는지 확인해 볼 필요가 큽니다.
/lib/mailer.lib.php에는 mailer함수(function)가 다음과 같이,
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="EUC-KR", $cc="", $bcc="")
$charset="EUC-KR"로 직접 언급되어 있습니다.
(물론, 이것은 utf-8으로 코딩된 버전이 아니며, 기존 배포버전처럼 euc-kr문자셋을 지원하는 배포버전 기준입니다.)
그런데, bbs/formmail_send.php 에는 mailer함수(function)가 뜬금없이,
$cfg[charset]과 같이 불려지고 있습니다.
즉, 정상적으로 라이브러리가 기재되어 있고,
실제 메일전송을 담당하는 /bbs 경로의 폼메일 파일에는 문자셋을 지정하는 위치에 $charset과 같이 기재했다면,
라이브러리 경로의 파일에서 기본으로 지정된 값을 끌어왔겠지요.
아마도, gnu3.xx버전의 mailer함수 형태를 그대로 끌어오다 보니 g4에서 차마 검토를 마치지 못해,
발생된 오류(검토 누락에 의한 오류)라고 보입니다.
한가지 참조할 만한 사항이라면,
gnu3.xx와 g4와의 환경설정(변수)에 따른 기본틀을 보자면,
$cfg[], $config[]과 같은 방식으로 차별화 되어 있다는 것입니다.
원 게시물 작성자께서 말씀하셨듯이,
$cfg[charset]를 제거할 경우 정상적인 이용이 가능하다고 하셨는데,
이것은 아마도 라이브러리 경로에서 euc-kr로 언급된 부분을 끌어왔기 때문이라고 보여집니다.
그런데... 여기서 발생되는 한가지 의문점은,
mailer함수에서 $cfg[charset]를 제거했을 경우,
정상적인 이용이 가능하다는 데 있습니다.
만약 그렇다면, 문자셋의 환경을 제거하기 이전의 환경(변수)값인 $cfg[charset]이
정상적으로 작동했다는 것이 되는데, 좀 더 자세한 검토가 필요할 것 같습니다.
-. 관련 파일 및 경로
/lib/mailer.lib.php (직접 관련)
/bbs/formmail_send.php (직접 관련)
/head.sub.php (간접 관련)
-. 참조사항
gnu3.xx의 메일러 함수 관련
/bbs/formmailsend.php에는 메일러 함수의 호출이 다음과 같이 정의되어 있으며,
mailer($fname, $fmail, $to, $subject, $mail_content, $type, $file, "EUC-KR");
/lib/mailer.lib.php 에는
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="EUC-KR", $cc="", $bcc="")
~과 같이 기재되어 있습니다.
흠 다른메일은 모르겠으나 nate.com 메일은 한글이 깨지네요...
naver gmail 확인햇는데 naver는 깨지고 gmail은 안깨지네요..
희한하군요.. 4.06.16 버전에선 위에 제가 쓴 글대로 했을경우 아무 이상이 없는데.. (오늘 날짜 다시 테스트 이상무)
업뎃된 4.06.17 (06.02.17) 버전에선 또 깨지네요..
그래서..
혹시나 해서 4.06.16 버전의 /lib/mailer.lib.php을 새 버전에 덮어 씌웠더니 아무 이상없이 잘 돌아갑니다.
(위에 본 글대로 수정은 마찬가지..)
최근 버전 정보를 보니 관리자님께서 메일러 함수를 수정했다고 하셨는데, 그 부분이 뭔가 오류가 있는게 아닐까.. 감히 생각해 봅니다..
참고로 이전 버전과 최근 버전의 다른 부분만 요약 써놨으니 필요하신분 참고하시길 바랍니다..
4.06.16 버전의 /lib/mailer.lib.php
6번째 줄 //
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="UTF-8", $cc="", $bcc="")
14~16번째 줄 //
$fname = "=?$charset?B?" . base64_encode($fname) . "?=";
$subject = "=?$charset?B?" . base64_encode($subject) . "?=";
$charset = ($charset != "") ? "charset=$charset" : "";
34번째 줄 //
$header .= "Content-Type: TEXT/HTML; $charset\n";
38번째 줄 //
$header .= "Content-Type: TEXT/PLAIN; $charset\n";
업뎃된 4.06.17 (06.02.17) 버전에선 또 깨지네요..
그래서..
혹시나 해서 4.06.16 버전의 /lib/mailer.lib.php을 새 버전에 덮어 씌웠더니 아무 이상없이 잘 돌아갑니다.
(위에 본 글대로 수정은 마찬가지..)
최근 버전 정보를 보니 관리자님께서 메일러 함수를 수정했다고 하셨는데, 그 부분이 뭔가 오류가 있는게 아닐까.. 감히 생각해 봅니다..
참고로 이전 버전과 최근 버전의 다른 부분만 요약 써놨으니 필요하신분 참고하시길 바랍니다..
4.06.16 버전의 /lib/mailer.lib.php
6번째 줄 //
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $charset="UTF-8", $cc="", $bcc="")
14~16번째 줄 //
$fname = "=?$charset?B?" . base64_encode($fname) . "?=";
$subject = "=?$charset?B?" . base64_encode($subject) . "?=";
$charset = ($charset != "") ? "charset=$charset" : "";
34번째 줄 //
$header .= "Content-Type: TEXT/HTML; $charset\n";
38번째 줄 //
$header .= "Content-Type: TEXT/PLAIN; $charset\n";
좋아요~ 감사합니다~~
메일깨짐