몇년 전에 첨부파일이 있는 이메일을 보내기 위해 쓰던 함수입니다. 이에 대해 관심 있는 분은 2% 부족할 수 있으므로 자신의 구미에 맞게 수정해서 사용하셔야겠습니다. PHP 에 대해 아직 잘 모르거나 입문하시는 분들은 uniqid, chunk_split, base64_encode, mail 등의 함수가 무슨 기능을 하는지 레퍼런스 가이드를 참고해야겠지요. 또한 MIME(Multipurpose Internet Message Extension)에 대한 이해 또한 필요하겠습니다.

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

<?
function send_mail_with_file($from_email,$from_name,$to_email,$subject,$body,$file){
    if (strlen($to_email)==0) return 0;
    $mailheaders .= "From: $from_name<$from_email> \r\n";
    $mailheaders .= "Reply-To: $from_name<$from_email>\r\n";
    $mailheaders .= "Return-Path: $from_name<$from_email>\r\n";
    if ($file[size]>0) {
        $boundary = uniqid("part");
        if (strlen($file[type])==0) $file[type] = "application/octet-stream";

        $mailheaders .= "MIME-Version: 1.0\r\n";
        $mailheaders .= "Content-Type: Multipart/mixed; boundary = \"".$boundary."\"";

        $bodytext = "This is a multi-part message in MIME format.\r\n\r\n";
        $bodytext .= "--".$boundary."\r\n";
        $bodytext .= "Content-Type: text/html; charset=\"ks_c_5601-1987\"\r\n";
        $bodytext .= "Content-Transfer-Encoding: base64\r\n\r\n";
        $bodytext .= chunk_split(base64_encode($body))."\r\n\r\n";

        $bodytext .= "--".$boundary."\r\n";
        $bodytext .= "Content-Type: ".$file[type]."; name=\"".$file[name]."\"\r\n";
        $bodytext .= "Content-Transfer-Encoding: base64\r\n";
        $bodytext .= "Content-Disposition: attachment; filename=\"".$file[name]."\"\r\n\r\n";
        $bodytext .= chunk_split(base64_encode($file[data]))."\r\n\r\n";

        $bodytext .= "--".$boundary."--";
    } else {
        $mailheaders .= "Content-Type: text/html \r\n\r\n";
        $bodytext = $body . "\r\n\r\n";
    }
    if (!mail($to_email,$subject,$bodytext,$mailheaders)) {return 0;}
    return 1;
}
?>

* 삽질할 수 있는 PHP로 이메일 보내기 샘플 소스 코드 도 참고하세요.
이올린에 북마크하기(0) 이올린에 추천하기(0)

트랙백 주소 :: http://www.hompydesign.com/tt/trackback/472

댓글을 달아 주세요

  1. 김동훈 2008/07/31 10:56  댓글주소  수정/삭제  댓글쓰기

    $file 파라메터를 어떤식으로 넘겨줘야 하는지 궁금합니다.
    그리고 제 경우에는 input type="file" 태그로 첨부하는 것이 아니라, 서버에 있는 파일을 소스안에서 지정해서 보내고 싶은데 어떻게 해야 하나요?
    답변 부탁드립니다~ ^^