php에서 mail()에 첨부파일 넣기

MIME을 알고 $_FILES를 알면 할 수 있다.

YI Eun Gook
2 min readSep 6, 2018

들어가기: MIME

일단 MIME을 간단히 이해할 필요가 있다.
위키백과: MIME
이걸 읽어보자. 특히 Multipart 메시지 항목을 간단히 이해하자.
그러면 이제 내용은 간단한데..

1. Content-Type: multipart/mixed의 헤더
2. Content-Type: text/html의 메일 본문(contents)
3. Content-Type: application/octet-stream의 첨부파일

1은 메일 헤더에 들어가고,
2와 3은 메일 바디에 들어간다.
2와 3도 내부적으로는 각각 메일 헤더와 메일 바디를 갖추고 있으며
이는 boundary로 구분된다.

들어가기: $_FILES

우선 $_FILES에 대해선 아래 문서를 읽어보자.
PHP: POST 방식 업로드
그리고 form은 아래처럼 구성해주면 된다.

gist 쓰니까 좀 편하긴 하다..

enctype을 꼭 주는걸 잊지 말자.
다른 input들과 마찬가지로 file도 name으로 받아올 수 있다.

메일 보내기

코드로 간단히 설명할게요

들어가기: MIME의 1, 2, 3이 하나씩 있어요

#30: 메일의 끝에 -- 가 있는 것이 포인트!
반대로 말하면 -- 가 없다면 3을 반복해서
첨부파일 하나가 아니라 여럿을 보낼 수 있다.

참고: 파일 들어왔는지 확인

$_FILES["file"]["size"] > 0으로 확인하면 된다.
isset()같은거 생각대로 안 됨..

--

--

No responses yet