홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
PHP 메일(mail) 함수를 이용한 첨부화일 전송하기
11년 전
[PHP 메일(mail) 함수를 이용한 첨부화일 전송하기]

여기서는 PHP 메일함수를 이용하여 첨부화일을 전송하는 가장 간단한 폼메일(Form mail)예제를 알아보겠습니다.
웹호스팅을 이용하고 계시다면 대부분 셋팅이 되어 있겠지만 시스템을 직접 설치 사용하고 계시다면 PHP의 mail()함수를 사용하기 위해서 아래의 사항을 체크해 봐야 합니다.

1.유닉스/리눅스 환경
php.ini 파일의 변수중 sendmail_path 가 완전한 경로로 잡혀 있는지 체크해 봐야 합니다.( php.ini 의 경로를 모른다면, php 파일을 하나 만들어서 <? phpinfo(); ?> 로 확인 하실 수 있습니다. )

sendmail_path = usr/sbin/sendmail -t -i


위의 환경변수는 저희 서버의 php.ini 에 있는 값을 확인한 결과입니다.

2.윈도우즈 환경
윈도우즈 환경은 두가지 값을 체크해 봐야 합니다. 첫번째로 php.ini 파일의 변수중 SMTP 변수에 SMTP 서버의 DNS 이름또는 IP 주소가 잡혀 있는지 체크해 봐야 하며, 두번째는 sendmail_from 변수에 디폴트 이메일 전송자의
email 주소 값이 있는지 체크해 봐야 합니다.

메일함수의 기본구조

mail( 받는 이메일주소, 제목, 내용, header정보 );


메일함수의 기본구조는 위와 같이 아주 간단한 구조를 가지고 있으며 이상이 없을시 1을 리턴합니다. 이상이 없다는 것은 메일함수가 인자로 받는 파라미터의 값들을 무난하게 받아 들였다는 것을 의미하며, 메일전송의 성공을 의미하는 것은 아닙니다.

아래의 예제는 첨부파일이 있는 폼메일(form mail) 전송의 가장 간단한 예제이며, 앞단의 폼(form)에서 넘겨받은 값들
을 이용해 메일을 전송하게 됩니다. 아래의 예제에서 살펴 보실 부분은 헤더작성, 이메일 본문 생성, 파일 첨부 부분
이며 앞단의 form 부분을 포함한 전체 소스는 zip 파일로 올려 놓겠습니다.

<?
// 폼에서 넘어오는 값들
//-- $mailTo : 수신자 이메일주소
//-- $mailFrom : 송신자 이메일주소
//-- $fromName : 송신자명 또는 정보
//-- $title : 메일제목
//-- $content : 메일내용
//-- $upfile : 첨부파일명
//*******************************


$boundary = "----" . uniqid("part"); // 구분자 생성

// --- 헤더작성 --- //
$header = "Return-Path: $mailFrom\r\n"; // 반송 이메일 주소
$header .= "from: $fromName <$mailFrom>\r\n"; // 송신자명, 송신자 이메일 주소

// --- 첨부화일이 있을경우 --- //
if($upfile && $upfile_size) {
$filename=basename($upfile_name); // 파일명 추출
$fp = fopen($upfile,"r"); // 파일 열기
$file = fread($fp,$upfile_size); // 파일 읽기
fclose($fp); // 파일 닫기
if ($upfile_type == ""){
$upfile_type = "application/octet-stream";
}

// --- 헤더작성 --- //
$header .= "MIME-Version: 1.0\r\n"; // MIME 버전 표시
$header .= "Content-Type: Multipart/mixed; boundary=\"$boundary\""; // 구분자 설정, Multipart/mixed 일 경우 첨부화일

// --- 이메일 본문 생성 --- //
$mailbody = "This is a multi-part message in MIME format.\r\n\r\n";
$mailbody .= "--$boundary\r\n";
$mailbody .= "Content-Type: text/html; charset=euc-kr\r\n";
$mailbody .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$mailbody .= nl2br(addslashes($content)) . "\r\n";

// --- 파일 첨부 ---//
$mailbody .= "--$boundary\r\n";
$mailbody .= "Content-Type: ".$upfile_type."; name=\"".$filename."\"\r\n"; // 내용
$mailbody .= "Content-Transfer-Encoding: base64\r\n"; // 암호화 방식
$mailbody .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"; // 첨부파일인 것을 알림
$mailbody .= base64_encode($file)."\r\n\r\n";

$mailbody .= "--$boundary--"; //내용 구분자 마침
} else {
// --- 헤더작성 --- //
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-Type: Multipart/alternative; boundary = \"$boundary\"";

// --- 이메일 본문 생성 --- //
$mailbody = "--$boundary\r\n";
$mailbody .= "Content-Type: text/html; charset=euc-kr\r\n";
$mailbody .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
$mailbody .= nl2br(addslashes($content)) . "\r\n";

$mailbody .= "--$boundary--\r\n\r\n";
}

$result = mail($mailTo,$title,$mailbody,$header);
if($result){
echo "메일 전송에 성공하였습니다.";
}else {
echo "메일 보내기 실패";
}

?>


추천추천 : 195 추천 목록
번호 제목
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
3,008
 윈도우10 시스템 파일 및 Dism 검사
3,007
 텍스트 줄바꿈, 글자자르기 CSS
3,006
 jQuery Mobile에서 유용한 코드 10가지.
3,005
 [PHP] dirname()함수와 $_SERVER 관련 상수들
3,004
 [PHP] 파일 크기, 사이즈 불러오는 함수, filesize()
3,003
 [jQuery] jQuery Quick API
3,002
 [ transition ] 링크 hover 색상 변화 속도 조절
3,001
 PHP 5.3.0 에서 사라진 함수들 대체
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.