Crazy 폼 메일의 장점 중 하나가 필드의 개수나 이름을 임의로 지정하여 폼을 구성할 수 있다는 점입니다. 필드의 이름을 한글이나 영문으로 지정할 수 있고, 다수의 사용자에게 동시에 전송할 수도 있습니다. 물론 원하는 개수만큼 파일을 전송할 수도 있습니다.

Crazy 폼 메일은 단지 POST로 전송된 데이터를 HTML 로 취합해서 mail() 함수로 전달만 하는 역할입니다. 그러므로 폼이 어떤 형태로 제작되었든 간에 전달된 POST Method 요소를 단지 하나로 묶어서 전송하는 것이므로 필드의 개수나 이름에는 문제가 되지 않습니다.


Form-Mail 에서 필요한 library 는 다음과 같습니다.

  1. send_Mail.php
    Send Mail 프로그램을 담당합니다.

설치 순서는 다음과 같습니다.

기본적으로 crazy 스크립트는 library 에 속한 파일 외에는 수정이 자유롭습니다.
물론 필요에 의해서 수정은 되나 차후 업그레이드가 필요한 때에는 library 파일만을 업데이트하기 때문에 가급적 수정을 하지 않거나 수정한 부분이 있다면 따로 표시해 주시기 바랍니다.

  1. PHP_MAIL_TO_EMAIL 상수에 "받는 분" 이메일을 작성합니다.
  2. 업로드나 입력 필드를 원하는 개수 만큼 임의로 작성하여 폼을 구성합니다.
  3. 파일을 서버로 모두 업로드합니다.

환경 설정

공통 상수

  • HABONYPHP_DIRNAME
    						
    Mail 이 설치된 경로.
    끝에 반드시 / 를 입력해 주세요.
    기본값: ./

사용 가능한 상수

  • PHP_MAIL_FROM_EMAIL_USE
    						
    보내는 사람의 이메일을 추출합니다.
    true 나 false 중 하나. 기본 값: false
    
    예를 들면 입력 폼에 이메일을 받으면 발신자로 추출합니다.
    ex #1. you@example.com
    ex #2. you@example.com,to@example.com,tree@example.com....
  • PHP_MAIL_TO_EMAIL
    						
    받는 이메일을 지정합니다.
    ex #1. you@example.com
    
    받는 사람이 여러 명일 경우 콤마로 구분하여 수개를 지정합니다.
    ex #2. you@example.com,to@example.com,tree@example.com....
  • PHP_MAIL_SUBJECT_EMAIL
    						
    이메일 제목을 지정합니다.
    
    기본값: PHP-Mail TEST!!
  • PHP_MAIL_STRIP_TAG
    					
    HTML 태그 제거 여부. 태그를 제거하고, nl2br()로 처리합니다.
    true 나 false 중 하나. 기본값: false
  • PHP_MAIL_HTML_TAG
    					
    HTML 태그 허용 여부. 모든 HTML 태그를 허용합니다. 
    주의: 일반 사용자에게는 권한을 제한해 주십시오.
    true 나 false 중 하나. 기본값: false
  • PHP_MAIL_INPUT_REMOVAL
    					
    전송된 POST 에서 불필요한 필드를 제거합니다.
    제거할 필드가 다수라면 공백으로 여러 개 지정합니다.
    
    ex. aa bb cc
  • PHP_MAIL_CHARSET
    					
    언어 설정. 기본값: UTF-8
  • PHP_FORM_INPUT_REQUIRED
    					
    필수 항목을 지정합니다.
    아래 필드 항목에서 필수로 지정하려면..
    <input name="field1">
    <input name="field2[]">
    <input name="field3[b][]">
    
    아래 처럼 공백으로 여러 개 입력하여 설정합니다.
    ex. field1 field2 field3
  • PHP_FORM_INPUT_CONTENTS_HEADER
    					
    전송되는 이메일 Header 를 설정합니다.
    
    기본값: <table border='0' width='70%' cellpadding='0' cellspacing='0' style='border:none;border-collapse:collapse;font-size:12px' align='center'><tbody><tr><td><h2>E-Mail Content</h2><tr><td>
  • PHP_FORM_INPUT_CONTENTS_LOOP
    					
    전송되는 이메일 Body 를 설정합니다.
    폼메일은 key 와 value 로 폼메일을 구성합니다. value 만 받기를 원한다면 첫 번째 %s 를 주석처리해서 사용하십시오.
    
    기본 값: </td></tr><tr><td valign='top' style='width: 30%%; height: 24px; border: 1px solid rgb(204, 204, 204);'>&nbsp;%s</td><td valign='top' style='width: 70%%; height: 24px; border: 1px solid rgb(204, 204, 204);'>&nbsp;%s
  • PHP_FORM_INPUT_CONTENTS_FOOTER
    					
    전송되는 이메일 Footer 를 설정합니다.
    
    기본값: </tbody></table>
  • PHP_MAIL_INPUT_IMG_LINK
    					
    이미지 자동 추출할지를 설정합니다.
    입력 폼에 이미지 URL을 입력 받으면 자동으로 이미지 링크로 변환합니다.
    
    ex. <img src="%s">
  • PHP_MAIL_INPUT_A_LINK
    					
    URL 링크를 자동 추출할지를 설정합니다.
    입력 폼에 URL을 입력 받으면 자동으로 링크로 변환합니다.
    
    ex. <a href="%s">%s</a>
  • PHP_MAIL_INPUT_EMAIL_LINK
    					
    이메일 URL을 입력받으면 자동 추출할지를 설정합니다.
    입력 폼에 이메일 URL을 입력 받으면 자동으로 링크로 변환합니다.
    
    ex. <a href="mailto:%s">%s</a>
  • PHP_MAIL_ATTACH_USE
    					
    첨부 파일을 사용할지를 설정합니다.
    true 나 false 중 하나. 기본값: false
  • PHP_MAIL_IMAGE_EXTS_USE
    					
    첨부 파일을 이미지 파일만 입력받을지 설정합니다.
    true 나 false 중 하나. 기본 값: false
  • PHP_MAIL_IMAGE_EXTS
    					
    이미지 파일 확장자를 설정합니다.
    첨부 파일을 이미지 파일만 받을 때 허용하는 확장자를 설정합니다.
    
    기본값: .jpg .gif .png .bmp
  • PHP_MAIL_BOUNDARY
    					
    BOUNDARY
    
    기본값: "__Habonyphp.com_HABONYPHP_FORM_Generator_" . md5(uniqid(srand(time()))) . "__"

사용 가능한 함수.

폼메일에서 독립적으로 사용할 수 있는 함수입니다.

  • 이메일 검증.
    							
    PHP_MAIL_Email_Confirmation( email );
    
    주어진 값이 이메일이면 배열을 반환하고, 실패하면 false를 반환합니다. 
    array(
    	id,
    	id@email.com
    );
  • 이미지 파일 확장자 검증.
    							
    PHP_MAIL_INPUT_IMAGE_EXTS( filename );
    
    주어진 값이 성공하면 파일이름을 실패하면 false를 반환합니다.
    

폼 기본 구성

폼 메일에서 가장 기본이 되고, 중요한 부분은 Email_Send() 함수입니다.
이 함수로 폼을 전송하고, 에러 값을 얻을 수 있습니다.

					
<?php
define("HABONYPHP_DIRNAME", "./");
// 필수 항목
define("PHP_FORM_INPUT_REQUIRED", "이름 이메일 내용");
// 받을 사람
define("PHP_MAIL_TO_EMAIL", "your@example.com");
// 이메일 제목
define("PHP_MAIL_SUBJECT_EMAIL", "하보니 메일 테스트!!");
require_once(HABONYPHP_DIRNAME . 'library/send_Mail.php');
if($_SERVER['REQUEST_METHOD'] === "POST")
{
	if($message = Email_Send() )
	{
		print_r($message);
	}
}
?>

<form enctype="multipart/form-data" action="" method="POST">
	보내는 이름: <input type="text" name="이름" value="하보니" /><br />
	보내는   분: <input type="text" name="이메일" value="your@example.com" /><br />
	내  용: <textarea name="내용"rows="5" cols="60">내용</textarea><br /> 
	<input type="submit" value="전송" />
</form>

Email_Send() 함수

메일 전송이 성공하면 true를 반환하고, 필수 항목 미입력 하였다면 필드 이름을 배열로 반환합니다.
전송에 문제가 생기면 false를 반환하므로 이것을 가지고 에러 메시지를 구성하십시오.

						
<?PHP
if(true === ($e = Email_Send()))
{
	echo “메일 전송 성공”;
}
// 필수 항목 미입력시
$raw = array();
if(!empty($e) && is_array($e))
{
	foreach($e as $w)
	{
		$raw[$w] = $w . ‘는 필수 항목입니다.’;
	}
}
//print_r($raw);
?>
<form enctype="multipart/form-data" action="" method="POST">
	<?PHP echo $raw[‘이름’]; ?><br />
	보내는 이름: <input type="text" name="이름" value="하보니" /><br />
	<?PHP echo $raw[‘이메일’]; ?><br />
	보내는   분: <input type="text" name="이메일" value="your@example.com" /><br />
	<?PHP echo $raw[‘내용’]; ?><br />
	내  용: <textarea name="내용"rows="5" cols="60">내용</textarea><br /> 
	<input type="submit" value="전송" />
</form>

전체 구성

폼 내용 전체적인 구성 내용입니다.

						
<?php
define("HABONYPHP_DIRNAME", "./");
// 첨부 파일 사용
define("PHP_MAIL_ATTACH_USE", true);

// 입력 폼에 이메일이 있다면 추출
define("PHP_MAIL_FROM_EMAIL_USE", true);

// 언어 설정
define("PHP_MAIL_CHARSET", 'UTF-8');

// 필수 항목
define("PHP_FORM_INPUT_REQUIRED", "내용 이미지");

// 이미지 파일만 업로드 허용
define("PHP_MAIL_IMAGE_EXTS_USE", true);

// 받을 사람
define("PHP_MAIL_TO_EMAIL", $_POST['my_email']);

// 이메일 제목
define("PHP_MAIL_SUBJECT_EMAIL", "하보니 메일 테스트!!");


require_once(HABONYPHP_DIRNAME . 'library/send_Mail.php');

if($_SERVER['REQUEST_METHOD'] === "POST")
{
  $message = Email_Send();
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>HABONYPHP - wwwCrazy Mail</title>
<link href="styles.css" rel="stylesheet" type="text/css" />
</head>
<body>

<h2>Habonyphp.com: wwwCrazy Mail Example</h2>
<?php
  print_r($message);
?>
<form enctype="multipart/form-data" action="" method="POST">
  받는 이메일: <input type="text" name="my_email" value="your@example.com" /><br />
  <br />
  이  름: <input type="text" name="이름" value="하보니" /><br /> 
  보내는 이메일: <input type="text" name="이메일" value="your@example.com" /><br />
  전  화: <INPUT size=3 name="전화[]" maxlength="3" value="02">
      <INPUT type="hidden" name="전화[]" value="-">
      <INPUT size=4 name="전화[]" maxlength="4" value="123">
      <INPUT type="hidden" name="전화[]" value="-">
      <INPUT size=4 name="전화[]" maxlength="4" value="456"><br /> 
  내  용: <textarea name="내용"rows="5" cols="60"><태그>링크</태그></textarea><br /> 
  이미지: <input type="file" name="이미지" value="" /><br />
  파일 1: <input type="file" name="파일[]" value="" /><br />
  파일 2: <input type="file" name="파일[]" value="" /><br />
  <input type="submit" value="전송" />  
</form>

</body>
</html>

참조와 숨은 참조

cc 참조 와 bcc 참조를 선택적으로 사용할 수 있습니다.

  • CC : 참조
    							
    ex #1. <input type="hidden" name="cc" value="you@example.com" >
    
    ex #2. <input type="hidden" name="cc" value="you@example.com,to@example.com...." >
  • BCC : 숨은 참조
    							
    ex #1. <input type="hidden" name="bcc" value="you@example.com" >
    
    ex #2. <input type="hidden" name="bcc" value="you@example.com,to@example.com...." >

폼 가로 출력

폼 내용을 가로로 결과 값을 얻는 방법을 소개합니다.

					
전  화: <INPUT size=3 name="전화[]" maxlength="3" value="02">
<INPUT type="hidden" name="전화[]" value="-">
<INPUT size=4 name="전화[]" maxlength="4" value="123">
<INPUT type="hidden" name="전화[]" value="-">
<INPUT size=4 name="전화[]" maxlength="4" value="456"><br />

출력: 02-123-456