묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
폼메일에서 첨부파일 기능
2013.01.16 12:17
1. 현재 contact us를 사용하고 있는데... 이곳에서 첨부파일 기능을 추가할 수 있는지 궁금하네요..
2. 만약 첨부파일 기능이 되지 않는다면.. 새로운 폼메일을 구축하려고 하려고 하거든요
인터넷에서 첨부파일이 가능한 폼메일 구하였는데.. 항목을 추가하려고 하니 계속 에러가 나서
어떻게 해야하는지 궁금해서 문의합니다.
--------------------------------------------------------------------
현재 초기상태는 http://ams2682.cafe24.com/mailform.html 이렇게 되어있어요
간략하게 소개를 하자면..
mailform.html에서 메일의 내용과 값을 입력받은후
mail.php 에서 실제 처리를 하는 방식입니다.
--------------------------------------------------------------------
[현재 모습]
[변경하고 싶은 모습]
------------------------------------------------------------------------------
mailform.html
<html>
<head>
<title>www.webmadang.net</title>
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
<style type="text/css">
<!--
td { font-family: "굴림"; font-size: 9pt}
.box { font-family: "굴림"; font-size: 12px; border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bott2006-08-01om-width: 1px; border-left-width: 1px}
-->
</style>
<script language="javascript">
<!--
function initForm(frm)
{
frm.mailTo.value = "";
frm.mailFrom.value = "";
frm.fromName.value = "";
frm.title.value = "";
frm.content.value = "";
frm.upfile.select();
document.selection.clear();
frm.mailTo.focus();
}
function checkForm(frm)
{
var Filter = /(\S+)@(\S+)\.(\S+)/
if( !frm.mailTo.value.match(Filter))
{
alert("유효하지 않은 이메일주소 입니다");
frm.mailTo.focus();
return;
}
if( !frm.mailFrom.value.match(Filter))
{
alert("유효하지 않은 이메일주소 입니다");
frm.mailFrom.focus();
return;
}
if( !frm.fromName.value )
{
alert("보내는 분의 이름 또는 정보를 입력해 주세요");
frm.fromName.focus();
return;
}
if( !frm.title.value )
{
alert("메일의 제목을 입력해 주세요");
frm.title.focus();
return;
}
if( !frm.content.value )
{
alert("메일의 내용을 입력해 주세요");
frm.content.focus();
return;
}
frm.action = "mail.php";
frm.submit();
}
//-->
</script>
</head>
<body>
<form name="form" method="post" enctype="multipart/form-data">
<table width="600" border="1" cellspacing="1" cellpadding="0">
<tr>
<td width="150">받는사람(to)</td>
<td width="457"><input type="text" name="mailTo" size="60"></td>
</tr>
<tr>
<td width="134">보내는사람(from)</td>
<td width="457"><input type="text" name="mailFrom" size="60"></td>
</tr>
<tr>
<td width="134">보내는사람 이름(name)</td>
<td width="457"><input type="text" name="fromName" size="60"></td>
</tr>
<tr>
<td>제목(title)</td>
<td><input type="text" name="title" size="60"></td>
</tr>
<tr>
<td>내용(content)</td>
<td><textarea name="content" cols="58" rows="10"></textarea></td>
</tr>
<tr>
<td>파일(upfile)</td>
<td><input type="file" name="upfile" size="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="button" name="send" value="메일발송" onClick="checkForm(this.form);">
<input type="button" name="init" value="초기화" onClick="initForm(this.form);"></td>
</tr>
</table>
</form>
</body>
</html>
------------------------------------------------------------------------------
mail.php
<?
// 폼에서 넘어오는 값들
//-- $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 "메일 보내기 실패";
}
?>
댓글 0
글쓴이 | 제목 | 최종 글 |
---|---|---|
XE | 공지 글 쓰기,삭제 운영방식 변경 공지 [16] | 2019.03.05 by 남기남 |
양희종1 | datepicker 레이어 겹침 현상 [1] | 2013.01.17 by CM(OEZ) |
이동일636 | 파일 업로드를 하고 다운을 받으면 싸이트가 다운 됩니다. 서버 수정 가능 [1] | 2013.01.17 by CM(OEZ) |
짼이짼 | 게시판에 적용한 확장변수 관리자만 볼 수 있게.... [1] | 2013.01.16 by 송동우 |
코코낫33000 | 동영상 첨부 게시판... [1] | 2013.01.16 by 송동우 |
코코낫33000 | 업로드 시에.. [1] | 2013.01.16 by 송동우 |
코코낫33000 | 호스팅에 대해... [1] | 2013.01.16 by 원조바다새 |
모모아이 | 포인트같은 변수 추가하는 방법 알려주세요. [1] | 2013.01.16 by sejin7940 |
ludi | 특정 모듈에서만 최소 글자수 제한하기 [1] | 2013.01.16 by 송동우 |
죽방망이 | jwplayer 질문드립니다. | |
쿠드반지루엣 | 서버에 XE홈페이지 만들때마다 데이터베이스를 새롭게 만들어야되나요? [2] | 2013.01.16 by 퍼니엑스이 |
Spes | 로그인 위젯 좀 도움 부탁드립니다. [1] | 2013.01.16 by Spes |
kaycho | xe 패스워드 함수 [1] | 2013.01.16 by 푸시아 |
늘같이 | Content 위젯 rss 추출이 안되네요 ㅜㅜㅜ | |
Homin | 게시판 내용이 안보여요 [1] | 2013.01.16 by 브레인630 |
릭키님 | xe 기업형 레이아웃..배너링크 문제..도와주세요 ; | |
미니미니미니 | 궁굼한게 있어요 | |
프리뷰 | 홈페이지 로딩... [1] | 2013.01.16 by 쿠드반지루엣 |
앙금골리앗 | 폼메일에서 첨부파일 기능 | |
코코낫33000 | 메뉴가 뜨질 않아요... [1] | 2013.01.16 by 송동우 |
꼬마쌀 | 외부로그인의 버튼 질문이요 |