2012-07-13 3 views
3

상황은 다음과 같습니다. \r\n과 같은 줄 바꿈이 포함 된 일반 텍스트 이메일을 MySQL에 저장했습니다. 내 PHP 스크립트는 메일을 보낼 때 먼저 sprintf 일부 매개 변수를 채운 다음 표준 mail() 함수와 함께 메일이 전송됩니다.PHP에서 MySQL의 일반 텍스트 전자 메일

내가 만나는 문제는 전자 메일 클라이언트 (제 경우에는 썬더 버드)가이를 해석하는 대신이 줄 바꿈을 표시한다는 것입니다.

내 스크립트를 테스트하기 위해 메일에 문장을 하드 코딩했습니다. 이 작업을 수행하면 메일이 올바르게 해석됩니다. 내 첫 번째 tought는 MySQL은 백 슬래시를 탈출했다, 그래서 나는 str_replace("\\\\", "\\", $str) 할려고했는데 도움이되지 않습니다.

분명히 잘못된 가정이나 어리석은 오류가 발생합니다. 그러나 나는 그것을 보지 못합니다. 무엇이 문제 일 수 있습니까?

+2

왜 쿼리의 결과 집합을 인쇄하고 mysql이 반환하는 것을 정확히 보지 않습니까? – Razvan

+0

나는'$ result [ 'message']'인쇄를했는데 브라우저에서 아무것도 빠져 나가지 못했습니다. –

+1

그러면 mail() 함수가 특수 문자를 이스케이프 처리합니다. – Razvan

답변

1

시도;

+0

문제를 해결해 주셔서 감사합니다. 실제로 phpMyAdmin에서 테스트 이메일을 입력했습니다. –

+0

이스케이프 문자를 작은 따옴표 사이에 넣으면 마음이 편합니다. ''이스케이프되지 않습니다. 큰 따옴표 사이에 넣으면 이스케이프됩니다! 그러나 이것은 사실이 아닙니다. \ '의 ofsource는 작은 따옴표 사이에있을 때 이스케이프됩니다. – bkwint

0

var_dump를 사용하여 메시지를 인쇄 해보십시오. 그러면 문자열 값에 대한 더 나은 정보가 표시 될 수 있습니다. 이 않는 str_replace ('\ n 개의 \ r에', "\ n \ r 일")처럼 교체

stripslashes($str); 
+0

이제'var_dump'를 시도했지만 이스케이프 된 문자는 보여주지 않습니다. –

0

는 아마도 슬래시를 타이 제거하려면이 옵션을 사용 \ n \ r 문자가 네 개의 개별 문자로 메시지에 저장되면 문제가 해결 될 수 있습니다. 예를 들어 phpmyadmin을 사용하여 입력 한 경우 예상대로 2 자 수가 아닌 4 자로 저장됩니다.

희망이 있습니다.

+0

아니요 이메일 클라이언트가 '\ r \ n'대신 'rn'을 표시합니다. 정말 이상해. –

관련 문제