일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 오즈 옴니아
- VMware
- 오좀니아
- 한메일 smtp
- Internet Explorer 8
- 파블애드
- 이클립스 설정
- ddos
- XP 설치
- 파워블로그
- USB 레지스트리
- PDA
- 옴니아2
- IE 8
- 삼성 메모리
- jQuery
- Ajax
- VMwareTools
- 이클립스
- Live Mesh
- 한메일 pop
- HP
- 한메일
- DDos 전용 백신
- HP 신제품
- 이클립스 플러그인
- php
- 윈도우 7
- IE8
- Windows 7
- Today
- Total
엉망진창
php 메일 (첨부파일가능) 본문
출처 : http://blog.naver.com/soo9585/80023256739
<?
if($mode=='mailsend') { // $mode 값이 mailsend 일 경우 아래 내용 실행
$limit = 5; // 첨부파일 제한 용량 (단위:MB)
#### 에러 발생시 back("에러문",이동할 페이지수) 함수를 사용하여 에러출력 후 지정한 페이지 수만큼 뒤로 이동함 ###
function back($str,$no=-1) {
echo "<script>
window.alert(\"".$str."\")
history.go(".$no.")
</script>
";
}
// $to 값이 공백일 경우 에러출력 후 한페이지 뒤로 이동
if(!ereg("([^[:space:]]+)",$to)) {
back("메일을 받는사람의 메일주소가 필요합니다.");
exit;
}
// $to 값이 정확한 이메일 주소가 아닐 경우 에러출력 후 한페이지 뒤로 이동
if(!ereg("([a-zA-Z0-9,_]{2,15})@([a-zA-Z0-9]{2,15}).([a-zA-Z0-9]{2,15})", $to, $regs)) {
back("받는사람의 Email 주소 형식이 틀립니다. [예] yourmail@server.domain");
exit;
}
// $subject 값이 공백일 경우 에러출력 후 한페이지 뒤로 이동
if(!ereg("([^[:space:]]+)",$subject)) {
back("메일 제목이 없습니다. 메일 제목을 입력해 주십시오.");
exit;
}
$boundary = "----".uniqid("part"); // 이메일 내용 구분자 설정
## 헤더생성 ##
$header .= "Return-Path: $from\r\n"; // 반송 이메일 주소
$header .= "From: $from\r\n"; // 보내는 사람 이메일 주소
$header .= "MIME-Version: 1.0\r\n"; // MIME 버전 표시
$header .= "Content-Type: Multipart/mixed; boundary = \"$boundary\""; // 구분자가 $boundary 임을 알려줌
## 여기부터는 이메일 본문 생성 ##
$mailbody .= "This is a multi-part message in MIME format.\r\n\r\n"; // 메세지
$mailbody .= "--$boundary\r\n"; // 내용 구분 시작
//내용이 일반 텍스트와 html 을 사용하며 한글이라고 알려줌
$mailbody .= "Content-Type: text/html; charset=\"ks_c_5601-1987\"\r\n";
//암호화 방식을 알려줌
$mailbody .= "Content-Transfer-Encoding: base64\r\n\r\n";
//이메일 내용을 암호화 해서 추가
$mailbody .= base64_encode(nl2br($body))."\r\n\r\n";
## 첨부 파일 개수만큼 루프를 돌면서 본문에 추가함 ##
for($i=0;$i<count($userfile);$i++) {
if($userfile[$i]) {
// $limit 으로 설정한 용량 보다 클경우 에러 출력 후 뒤로 이동
if($userfile_size[$i] > ($limit * 1024 * 1024)) {
back(($i+1)."번째 첨부파일이 제한용량(".$limit."MB)을 초과하였습니다.");
exit;
}
$filename = basename($userfile_name[$i]); // 파일명만 추출 후 $filename에 저장
$fp = fopen($userfile[$i], "r"); // 파일 open
$file = fread($fp, $userfile_size[$i]); // 파일 내용을 읽음
fclose($fp); // 파일 close
// 파일첨부파트
$mailbody .= "--$boundary\r\n"; // 내용 구분자 추가
// 여기부터는 어떤 내용이라는 것을 알려줌
$mailbody.= "Content-Type: ".$userfile_type[$i]."; 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";
}
}
/*
위에서 생성된 $header 와 $mailbody 를 mail() 함수를 이용해서 $to 에게 보냄
만약 메일 전송 실패시 에러출력 후 첫화면으로 이동
*/
if(!mail($to,addslashes($subject),$mailbody,$header)) back("이메일 발송해 실패 하였습니다.");
else echo "<script>alert('메일을 발송하였습니다.');location.replace('?');</script>";
// 아래 html 의 경우 특별히 설명이 필요 없을 듯 하네요...^^
} else { // $mode 값이 mailsend 가 아닐경우 아래 내용 실행
?>
<html>
<head>
</head>
<body text="white" link="#CDEFFF" vlink="#DCD8FF" alink="#FFD2CD">
<table border="0" width="600">
<form method="post" name="form" enctype="multipart/form-data" action="">
<input type=hidden name="mode" value="mailsend">
<tr>
<td width="200" bgcolor="#5584AA"><p align="center">받는사람 Email</td>
<td><p><input type="text" name="to" size="30"></td>
</tr>
<tr>
<td width="200" bgcolor="#5584AA"><p align="center">보내는사람 Email</td>
<td><p><input type="text" name="from" size="30"></td>
</tr>
<tr>
<td width="200" bgcolor="#5584AA"><p align="center">제 목</td>
<td><p><input type="text" name="subject" size="50"></td>
</tr>
<tr>
<td width="200" bgcolor="#5584AA"><p align="center">내 용</td>
<td><p><textarea name="body" rows="10" cols="55"></textarea>
</tr>
<tr>
<td width="200" bgcolor="#5584AA"><p align="center">첨 부</td>
<td>
<p><input type="file" name="userfile[]" size="30"><br>
<input type="file" name="userfile[]" size="30"><br>
<input type="file" name="userfile[]" size="30"><br>
<input type="file" name="userfile[]" size="30"><br>
<input type="file" name="userfile[]" size="30">
</td>
</tr>
<tr>
<td colspan=2 align=center><br>
<input type="submit" name="send" value="편지보내기">
<input type="reset" name="cancel" value="내용지우기">
</td>
</tr>
</form>
</table>
<?
}
?>
'Study_Web > PHP' 카테고리의 다른 글
ZendOptimizer-2.x Ver 다운로드 (0) | 2008.11.25 |
---|---|
.htaccess 사용해서 이미지 외부링크 막기 (0) | 2007.08.22 |
그누보드4에서의 멀티업로드 (3) | 2007.05.01 |
php 전체 메일 (0) | 2007.04.23 |
[펌]실시간 쪽지 PHP (0) | 2007.04.23 |