php mail() 함수를 사용할 때 body 내용에 일부 글자가 느낌표로 바뀌어 깨지는 현상이 발생할 때가 있습니다.
예 ) 안녕하세요. 반 ! 습니다.
원하는 한글 문자가 나오지 않고 ! 나 ? 등의 문자로 메일을 받게 되었다면 이렇게 해결해 주시면 됩니다.
먼저 해당 원인은 메일 콘텐츠의 내용이 1,000자가 넘어가게 되어 발생하는 문제입니다.
한글 문자가 깨지는 문제는 메일 헤더에 Content-Transfer-Encoding: base64 \r\n 을, 메일 내용을 담은 변수(content라고 가정)에는 chunk_split(base64_encode($content)) 와 같이 지정해주셔야 합니다.
아래 코드 예제로 위 코드가 적용되는 부분을 확인할 수 있습니다.
// 메일 헤더 $headers = "From: hello<do-not-reply@a.com>\r\nMIME-Version: 1.0\r\nContent-Type: text/html; charset=utf-8\r\nContent-Transfer-Encoding: base64\r\n"; // 메일 제목 $title = "메일 제목입니다."; $title = "=?utf-8?B?".base64_encode($title)."?=\n"; // 메일 콘텐츠 $content = "<html lang='ko'><head><meta charset='utf-8'/></head><body><h1>Hello, World! 안녕하세요. 테스트입니다.</h1></body></html>"; // 메일 전송 mail("전송할 이메일 주소", $title, chunk_split(base64_encode($content)), $headers);
만약 이 방법으로도 해결되지 않는다면 메일 콘텐츠 내 head 태그에 <meta charset=’utf-8′ /> 을 추가하거나 메일 헤더에 \n 을 \r\n 으로 바꾸어 본 후에 다시 시도해보면 됩니다.
Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…
INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…