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

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

YI Eun Gook
Sep 6, 2018 · 2 min read

들어가기: 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()같은거 생각대로 안 됨..

    YI Eun Gook

    Written by

    = v =;;

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade