윈도우2000서버 smtp + apmsetup + 그누보드 설치후 메일발송 제목 깨짐 정보
윈도우2000서버 smtp + apmsetup + 그누보드 설치후 메일발송 제목 깨짐본문
제목 그대로 입니다.
윈도우 2000서버에 smtp 설치했구요
apmsetup를 깔았습니다.
그 위에 그누보드 설치했구요...
문제는 메일발송을 할 경우에 다른건 다 정상인데 아래와 같이 메일 제목이 깨집니다.
=?EUC-KR?B?W7jewM+wy7vnXSDBprjx?=
테스트 메일, 회원메일링, 글 작성자의 서브메뉴로 폼메일을 보내는 경우 모두 동일합니다.
G메일, 네이버메일, 한메일 모두 다 똑같네요...
참고로, asp 폼메일 제작해서 발송하면 아무 문제 없이 잘 갑니다.
Tip 게시판이나 질문답변 게시판에서 메일로 검색해서 나오는 글은 다 봤습니다.
그러니 제발 검색해보라는 식의 답변은 사양합니다.
Tip 게시판에 있는 글중에 $cfg[charset] 삭제하는 부분이 있는데 그건 폼메일일 경우에만 해당되기에 제가 원하는 답변이 아닙니다.
윈도우 2000서버에 smtp 설치했구요
apmsetup를 깔았습니다.
그 위에 그누보드 설치했구요...
문제는 메일발송을 할 경우에 다른건 다 정상인데 아래와 같이 메일 제목이 깨집니다.
=?EUC-KR?B?W7jewM+wy7vnXSDBprjx?=
테스트 메일, 회원메일링, 글 작성자의 서브메뉴로 폼메일을 보내는 경우 모두 동일합니다.
G메일, 네이버메일, 한메일 모두 다 똑같네요...
참고로, asp 폼메일 제작해서 발송하면 아무 문제 없이 잘 갑니다.
Tip 게시판이나 질문답변 게시판에서 메일로 검색해서 나오는 글은 다 봤습니다.
그러니 제발 검색해보라는 식의 답변은 사양합니다.
Tip 게시판에 있는 글중에 $cfg[charset] 삭제하는 부분이 있는데 그건 폼메일일 경우에만 해당되기에 제가 원하는 답변이 아닙니다.
댓글 전체
아우~ 버튼을 잘못눌러서 썼던글 간략히 다시 씁니다.
저의 경우 환경은 win 2003, IIS6, PHP5이며, 메일 서버는 상용 메일캐리어 사용 합니다.
질문 내용에 직접 만드신 메일 폼에서는 문제가 없는 것으로 보아, 메일 서버랑은 전혀 별개 문제라 생각
듭니다.
프로그램 초보여서 여러 문제에 부딪쳤으며, 해결하는데 일주일 이상 걸렸네요.
파일은 라이브러리 폴더의 mail.lib.php 에서 수정하였습니다.
첫번째 헤더
메일메시지가 깨지는 이유는 메일 메시지를 최초에 잘 못 구성하였기 때문입니다.
헤더 필드 의 줄바꿈이 잘못 되었을 가능성이 많습니다.
인터넷 메시지의 헤더 라인 구분자는 CRLF 입니다.
저의 경우 헤더 라인이 LF("\n")으로 되어 있었습니다
인터넷 메일 구성에 관한 내용은 RFC 2822를 MIME 에 관한 내용은 RFC 2045 문서를 참고하시기 바랍니다.
(이 부분은 초보인 저로서는 도저히 모르겠더군요)
이 부분을 CRLF 로 변경해 주시기 바랍니다.(저의 경우는 \r\n으로 변경해 주었습니다.)
두번째 메일 주소
헤더의 인코딩 문제라고 하시는 분들이 많습니다.
base64의 코드를 사용하는데 이것을 디코딩 할때 문제가 많다고 하시는데, 저는 전혀 문제가 없었습니다.
이 내용의 글이 있어서 이것을 두고 몇일 헤메게 되었는데 결국 아니였고, 소스에 메일 주소를 헤더에 넣는
부분이 있습니다.
이 부분에 공백문자가 들어가서 인식하는 경우가 있습니다.
$header = "Return-Path:$fname<$fmail>\r\n";
$header .= "From:$fname<$fmail>\r\n";
$header .= "Reply-To:<$fmail>\r\n";
if ($cc) $header .= "Cc:$cc\r\n";
if ($bcc) $header .= "Bcc:$bcc\r\n";
그냥 다 붙여버렸습니다.
마지막으로 기초적인 실수 입니다.
헤더에 대해 생소하다보니 잘 몰라서 그냥 넘어가곤 했는데 어떤 이유에서인지 메일 제목을 인코딩해서
변수에 할당하는 부분이 잘못되어 있었습니다.
$subject .= "=?$charset?B?" . base64_encode($subject) . "?=";
받아온 제목 변수를 인코딩하여 제목 변수에 더하는 것으로 되어 있었습니다.
잘 안보이는 조그만 점 때문에 무지 헤맸습니다.
저의 경우 결국 다른 곳도 문제가 많았지만 제목이 깨지는 것은 인코딩 안된 제목과 인코딩 된 제목을
합쳐서 보내어 디코딩시 인코딩 안된 부분을 디코딩해서 생기는 문제였습니다.
결정적으로 제목이 깨지는 이유였었습니다.
헤더 꼼꼼히 확인하시고, 메일을 보내는 함수 부분 확인하시고, 성공하시길 바라겠습니다.
저의 경우 환경은 win 2003, IIS6, PHP5이며, 메일 서버는 상용 메일캐리어 사용 합니다.
질문 내용에 직접 만드신 메일 폼에서는 문제가 없는 것으로 보아, 메일 서버랑은 전혀 별개 문제라 생각
듭니다.
프로그램 초보여서 여러 문제에 부딪쳤으며, 해결하는데 일주일 이상 걸렸네요.
파일은 라이브러리 폴더의 mail.lib.php 에서 수정하였습니다.
첫번째 헤더
메일메시지가 깨지는 이유는 메일 메시지를 최초에 잘 못 구성하였기 때문입니다.
헤더 필드 의 줄바꿈이 잘못 되었을 가능성이 많습니다.
인터넷 메시지의 헤더 라인 구분자는 CRLF 입니다.
저의 경우 헤더 라인이 LF("\n")으로 되어 있었습니다
인터넷 메일 구성에 관한 내용은 RFC 2822를 MIME 에 관한 내용은 RFC 2045 문서를 참고하시기 바랍니다.
(이 부분은 초보인 저로서는 도저히 모르겠더군요)
이 부분을 CRLF 로 변경해 주시기 바랍니다.(저의 경우는 \r\n으로 변경해 주었습니다.)
두번째 메일 주소
헤더의 인코딩 문제라고 하시는 분들이 많습니다.
base64의 코드를 사용하는데 이것을 디코딩 할때 문제가 많다고 하시는데, 저는 전혀 문제가 없었습니다.
이 내용의 글이 있어서 이것을 두고 몇일 헤메게 되었는데 결국 아니였고, 소스에 메일 주소를 헤더에 넣는
부분이 있습니다.
이 부분에 공백문자가 들어가서 인식하는 경우가 있습니다.
$header = "Return-Path:$fname<$fmail>\r\n";
$header .= "From:$fname<$fmail>\r\n";
$header .= "Reply-To:<$fmail>\r\n";
if ($cc) $header .= "Cc:$cc\r\n";
if ($bcc) $header .= "Bcc:$bcc\r\n";
그냥 다 붙여버렸습니다.
마지막으로 기초적인 실수 입니다.
헤더에 대해 생소하다보니 잘 몰라서 그냥 넘어가곤 했는데 어떤 이유에서인지 메일 제목을 인코딩해서
변수에 할당하는 부분이 잘못되어 있었습니다.
$subject .= "=?$charset?B?" . base64_encode($subject) . "?=";
받아온 제목 변수를 인코딩하여 제목 변수에 더하는 것으로 되어 있었습니다.
잘 안보이는 조그만 점 때문에 무지 헤맸습니다.
저의 경우 결국 다른 곳도 문제가 많았지만 제목이 깨지는 것은 인코딩 안된 제목과 인코딩 된 제목을
합쳐서 보내어 디코딩시 인코딩 안된 부분을 디코딩해서 생기는 문제였습니다.
결정적으로 제목이 깨지는 이유였었습니다.
헤더 꼼꼼히 확인하시고, 메일을 보내는 함수 부분 확인하시고, 성공하시길 바라겠습니다.
정말로 긴 답변 너무감사드립니다.
자신의 일도 아닌데 신경써 주시고 두번이나 시간 내주셔서.. 거듭 감사드립니다.
왜 그런지 몰라도 끝까지 안되네요..에휴..
라이브러리 수정해서 영어로 제목을 쓰면 깨지지 않고 들어오기는 하는데..
여전히 한글은 문제가 생기네요..
리눅스 호스팅에서는 아무문제 없이 잘 되는데.. 왜 윈도우 서버에서 문제가 발생하는지.. 이구...
자신의 일도 아닌데 신경써 주시고 두번이나 시간 내주셔서.. 거듭 감사드립니다.
왜 그런지 몰라도 끝까지 안되네요..에휴..
라이브러리 수정해서 영어로 제목을 쓰면 깨지지 않고 들어오기는 하는데..
여전히 한글은 문제가 생기네요..
리눅스 호스팅에서는 아무문제 없이 잘 되는데.. 왜 윈도우 서버에서 문제가 발생하는지.. 이구...