개발 Q&A

제목 php 메일 발송 시 파일 첨부
글쓴이 앙마 작성시각 2014/10/27 18:42:54
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 16834   RSS
ci가 아닌 생 php로 메일 발송 중입니다

인터넷에 일단 시각적으로 깔끔해 보이는 소스를 찾았는데요

 // 이메일 발송 
 // toname, toemail = 받는 사람 
 // fromname, fromemail = 보내는 사람 
 // title = 제목 
 // content = 본문내용 
 // charset = 언어, 기본값: euc-kr 
 // mode = TEXT/HTML 
 // att = 첨부파일, 예제: $_FILES['userfile']['tmp_name'] 
 // 파일이 여러 개일 경우 
 // 하나의 파일에 대한 정보를 :로 구분해서 묶어 주어 ,로 구분해 줍니다. 
 // $_FILES['userfile']['tmp_name']:$_FILES['userfile']['name']:MIMETYPE
 //  tmp_name[0]:name[0]:mime[0],tmp_name[1]:name[1]:mime[1] 

$att = $_FILES['userfile']['tmp_name'] ;

$toemail = "11111@naver.com";
$fromemail = "22222@hanmail.net";
$title = "제목 123";
$content = "메일 테스트";
 
$charset='euc-kr';

$mode='TEXT/HTML';
       $Arrayfile = explode(',',$_FILES['userfile']['tmp_name']); 


       // 받는 사람 
       $recipient = $toname." <".$toemail.">\r\n"; 


       // 기본 헤더 코드 
       $header .= "Return-path: <".$fromemail.">\r\n"; 
       $header .= "From: ".$fromname."<".$fromemail.">\r\n"; 
  
       // 에러발생시 반송될 주소 
       $header .= "Reply-To:".$fromname."<".$fromemail.">\r\n"; 
       $header .= "MIME-Version: 1.0\r\n"; 
       $header .= "X-Sender: <".$fromemail.">\r\n"; 
       $header .= "X-Mailer: PHP\r\n"; 


       // 첨부파일이 없다면... 
       if(empty($att)){ 

             // 내용 첨부 
             $header .= "Content-Type: ".$mode.
                          "; charset=".$charset."\r\n"; 
             $body = $content."\r\n\r\n"; 
       } 
       // 첨부파일이 있다면... 
       else{ 

            for($i=0; $i                   list($upfile[$i],$filename[$i],$mimetype[$i]) 
                    = explode(':',$Arrayfile[$i]); 

                  // 파일열기 
                  $fp[$i] = @fopen($upfile[$i],"r"); 
                  $file[$i] = @fread($fp[$i],@filesize($upfile[$i])); 
                  @fclose($fp[$i]); 

                  // 파일 타입 
                  if(empty($mimetype[$i])){ 
                        $mime[$i] = "application/octet-stream"; 
                  } else { 
                        $mime[$i] = $mimetype[$i]; 
                  } 
             } 


             $boundary = "--".uniqid("gmForm editor"); 
             $header .= "Content-type: MULTIPART/MIXED;
                          BOUNDARY=\"$boundary\""; 
             $body = "This is a multi-part message in MIME format.\r\n\r\n"; 
             $body .= "--$boundary\r\n"; 


             // 내용 첨부 
             $body .= "Content-Type: ".$mode."; charset=".$lang."\r\n"; 
             $body .= "Content-Transfer-Encoding: base64\r\n\r\n"; 
             $body .= chunk_split(base64_encode($content))."\r\n\r\n"; 


             for($i=0; $i     
                   // 파일 첨부 
                  $body .= "--$boundary\r\n"; 
                  $body .= "Content-Type: $mime[$i];
                             name=\"$filename[$i]\"\r\n"; 
                  $body .= "Content-Transfer-Encoding: base64\r\n\r\n\r\n"; 
                  $body .= 
                         chunk_split(base64_encode($file[$i]))."\r\n"; 
             } 
             $body .= "\r\n--$boundary--\r\n"; 
      } 


      return @mail($recipient,$title,$body,$header); 

 
 ?>

위와 같이 할 경우 메일은 발송되고 첨부파일도 들어는 가있습니다만

이미지를 보내도 .txt파일이 나오더군요;;;

어떻게 수정을 해야 좋을지...
 다음글 Ki_Board 설치 질문 드립니다. (2)
 이전글 curl로 Request Header를 변경해서 페이지... (2)

댓글

변종원(웅파) / 2014/10/28 11:27:34 / 추천 0
mime 타입을 확인해보셔야 할 것 같네요.

이미지 첨부했을때 이미지의 mime type이 제대로 나오는지 text로 나오는지... ^^
앙마 / 2014/10/28 15:09:32 / 추천 0
변종원 // 감사합니다 해결 했네요