티스토리 뷰
PHP의 mail() 함수를 사용하여 이메일을 보낼 때, 한글 문자가 깨지는 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해서는 이메일 본문을 올바른 인코딩으로 변환해야 합니다.
다음은 PHP에서 mail() 함수를 사용하여 한글 문자가 포함된 이메일을 보내는 예제입니다.
$to = 'recipient@example.com';
$subject = '한글 제목';
$message = '한글 본문';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
$headers .= "From: sender@example.com" . "\r\n";
mail($to, $subject, $message, $headers);
이 예제에서는 Content-type 헤더에 charset=UTF-8을 설정하여 이메일 본문이 UTF-8 인코딩으로 작성되었음을 나타내고 있습니다. UTF-8은 대부분의 언어를 지원하는 범용 인코딩 방식이므로, 한글 뿐만 아니라 다른 언어의 문자도 올바르게 표시됩니다.
따라서, 이메일 본문을 작성할 때 UTF-8 인코딩으로 작성하고, Content-type 헤더에 charset=UTF-8을 설정하는 것이 중요합니다. 이를 통해 한글을 포함한 다양한 문자를 올바르게 표시할 수 있습니다.
첨부파일을 넣어서 보내고 싶을때
PHP의 mail() 함수를 사용하여 이메일에 첨부 파일을 추가할 때, 이메일 본문에 한글 문자가 포함된 경우에도 이를 올바르게 처리할 수 있습니다. 이를 위해서는 이메일 본문을 적절한 인코딩으로 변환하고, 첨부 파일도 올바른 형식으로 인코딩하여 전송해야 합니다.
다음은 PHP에서 mail() 함수를 사용하여 이메일에 첨부 파일을 추가하고, 이메일 본문에 한글 문자가 포함된 경우에 대한 예제입니다.
$to = 'recipient@example.com';
$subject = '한글 제목';
// 이메일 본문 작성
$message = "한글 본문입니다.";
// 이메일 본문 인코딩 설정
$message = iconv('UTF-8', 'EUC-KR', $message);
// 첨부 파일 경로 및 파일명
$filename = '/path/to/attachment.pdf';
$basename = basename($filename);
// 첨부 파일 MIME 타입 확인
$filetype = mime_content_type($filename);
// 첨부 파일 읽기 및 base64 인코딩
$filedata = chunk_split(base64_encode(file_get_contents($filename)));
// 이메일 헤더 작성
$headers = "From: sender@example.com\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"boundary\"\r\n";
$headers .= "Content-Disposition: attachment; filename=\"$basename\"\r\n";
// 이메일 본문 작성
$body = "--boundary\r\n";
$body .= "Content-Type: text/plain; charset=\"EUC-KR\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n\r\n";
$body .= chunk_split(base64_encode($message));
// 첨부 파일 작성
$body .= "--boundary\r\n";
$body .= "Content-Type: $filetype; name=\"$basename\"\r\n";
$body .= "Content-Disposition: attachment; filename=\"$basename\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n\r\n";
$body .= $filedata . "\r\n\r\n";
// 메일 전송
mail($to, $subject, $body, $headers);
이 예제에서는 iconv() 함수를 사용하여 이메일 본문을 EUC-KR 인코딩으로 변환하였습니다. 이메일 본문과 첨부 파일의 MIME 타입과 인코딩 방식을 정확하게 지정하고, 첨부 파일은 base64 인코딩하여 전송하였습니다. 또한, 이메일 본문과 첨부 파일을 각각 다른 boundary로 구분하여 전송하였습니다.
따라서, 이메일에 첨부 파일을 추가하면서도 이메일 본문의 한글 문자를 올바르게 처리할 수 있습니다.
'IT tech Coding > php' 카테고리의 다른 글
php 문자열 끝에 개행문자 삭제 (0) | 2023.02.28 |
---|---|
php 주소창 문구 변경하는 코드 (0) | 2023.02.28 |
[php + JS] 웹사이트에 첨부파일(pdf 등) 올리는 실제 프로그램 구현과정 (0) | 2023.01.08 |
[php] 오늘 날짜 또는 특정일 기준 5일전 날짜가 설정한 일자의 범위에 있는지 확인하는 소스코드 (0) | 2022.12.21 |
php+javascript 이미지파일 다중 업로드 만들기 서버저장 동작구현 (0) | 2022.11.11 |
- Total
- Today
- Yesterday
- 효율적코딩방법
- #파이썬패키징
- json파일편하게보는법
- 구글드라이브API
- 테크에능한여성
- chatGPT3.5파이썬버전
- 캐드자동작도
- 엑셀보호
- 도면자동생성
- 엑셀셀보호
- 1. #웹개발 2. #로트번호 3. #성적서보기 4. #ajax 5. #jquery 6. #php 7. #프론트엔드 8. #백엔드 9. #부트스트랩 10. #웹기능구현
- 티스토리챌린지
- 스크립트작성기초
- 코딩튜토리얼
- Bootstrap 5
- 프로그래머생활
- json파일형태보기
- 오블완
- 파이썬코드줄바꿈방법
- isset을 적용해야 하는 이유
- 오토핫키가이드
- 엑셀입력보호
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- #프로그램설치
- 뫄프로그래밍
- General error: 2031
- ajax오류메시지
- 코딩효율성
- sql문장 날짜계산
- #InstallForge
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |