묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
(급해요) PHP로 만든 폼메일...질문이요.
2003.12.29 05:05
제가 PHP를 잘 모르는데
책(영진_ php4_30일완성)보고 만든 폼메일인데...발송을 하면 메일의 일부분이 안들어오네요. ㅠ,.ㅠ
발송을 하면...
제목, 내용은 들어오고 나머지부분(보낸사람 성명, 메일주소, 홈페이지 등)은 전혀 안들어 옵니다.
왜 그런거죠???
========= 메일 쓰는 부분이고요... ================
<SCRIPT language=JavaScript>
<!--
function CheckForm()
{
if(document.forms.name.value == '')
{
alert('이름을 입력하여 주십시오');
document.forms.name.focus();
return;
}
if(document.forms.e_mail.value == '')
{
alert('e_mail을 입력하여 주십시오');
document.forms.e_mail.focus();
return;
}
if(document.forms.subject.value == '')
{
alert('제목을 입력하여 주십시오');
document.forms.subject.focus();
return;
}
if(document.forms.contents.value == '')
{
alert('내용을 입력하여 주십시오');
document.forms.contents.focus();
return;
}
OrderEmail=document.forms.e_mail.value;
aIndex=OrderEmail.indexOf("@");
dotIndex=OrderEmail.indexOf(".");
if(aIndex==-1 || dotIndex==-1 || aIndex >= (dotIndex-1))
{
alert("E_mail 주소를 다시 확인해 주십시오");
document.forms.e_mail.focus();
return;
}
document.forms.action = 'sendmail.php';
document.forms.submit();
}
function reset(){
document.forms.e_mail.value == ""
}
//-->
</SCRIPT>
</head>
<body>
<form action="sendmail.php" method="post" name="forms" id="forms">
<br>
<table width="575" border="0" cellspacing="4">
<tr>
<td width="200" valign="bottom"><div align="right" class="style3 style4"><span class="style6">*</span> <span class="style9 style7">성 명 (Name)</span></div></td>
<td width="354"><input name="name" type="text" class="input" id="name" size="30">
</td>
</tr>
<tr>
<td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">메 일 (E-mail)</span> </div></td>
<td><input name="e_mail" type="text" id="e_mail" size="58"></td>
</tr>
<tr>
<td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">홈페이지 (HomePage)</span> </div></td>
<td><input name="homepage" type="text" id="homepage" size="58"></td>
</tr>
<tr>
<td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">제 목 (Subject)</span> </div></td>
<td><input name="subject" type="text" id="subject" size="58"></td>
</tr>
<tr>
<td valign="top"><div align="right" class="style5">
<p><br>
<span class="style6">*</span> <span class="style7">내 용 (Contents)</span> </p>
</div></td>
<td><textarea name="contents" cols="57" rows="8" id="contents"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><div align="right"></div>
<a href="javascript:CheckForm();"><img src="images/bt_ok.gif" width="70" height="40" border="0"></a><a href="javascript:document.forms.reset();"><img src="images/bt_cancel.gif" width="70" height="40" border="0"></a>
<div align="center"> </div></td>
</tr>
</table>
</form>
</body>
</html>
==================== 메일 보내는 PHP 파일(sendmail.php)이걸랑요....=========
<?
$headers .= "from:<$from>rn";
mail("test@test.net",$subject,$contents,$headers);
echo"메일을 발송했습니다.";
?>
==========================메일주소는 임의로 test....라고 고친거구요. 실제로는 해당메일을 썼구요... ========
도와주세요.
급한거라서 벌써 몇시간째 고민하면서 밤을 꼴딱 새워버렸답니당 T^T
책(영진_ php4_30일완성)보고 만든 폼메일인데...발송을 하면 메일의 일부분이 안들어오네요. ㅠ,.ㅠ
발송을 하면...
제목, 내용은 들어오고 나머지부분(보낸사람 성명, 메일주소, 홈페이지 등)은 전혀 안들어 옵니다.
왜 그런거죠???
========= 메일 쓰는 부분이고요... ================
<SCRIPT language=JavaScript>
<!--
function CheckForm()
{
if(document.forms.name.value == '')
{
alert('이름을 입력하여 주십시오');
document.forms.name.focus();
return;
}
if(document.forms.e_mail.value == '')
{
alert('e_mail을 입력하여 주십시오');
document.forms.e_mail.focus();
return;
}
if(document.forms.subject.value == '')
{
alert('제목을 입력하여 주십시오');
document.forms.subject.focus();
return;
}
if(document.forms.contents.value == '')
{
alert('내용을 입력하여 주십시오');
document.forms.contents.focus();
return;
}
OrderEmail=document.forms.e_mail.value;
aIndex=OrderEmail.indexOf("@");
dotIndex=OrderEmail.indexOf(".");
if(aIndex==-1 || dotIndex==-1 || aIndex >= (dotIndex-1))
{
alert("E_mail 주소를 다시 확인해 주십시오");
document.forms.e_mail.focus();
return;
}
document.forms.action = 'sendmail.php';
document.forms.submit();
}
function reset(){
document.forms.e_mail.value == ""
}
//-->
</SCRIPT>
</head>
<body>
<form action="sendmail.php" method="post" name="forms" id="forms">
<br>
<table width="575" border="0" cellspacing="4">
<tr>
<td width="200" valign="bottom"><div align="right" class="style3 style4"><span class="style6">*</span> <span class="style9 style7">성 명 (Name)</span></div></td>
<td width="354"><input name="name" type="text" class="input" id="name" size="30">
</td>
</tr>
<tr>
<td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">메 일 (E-mail)</span> </div></td>
<td><input name="e_mail" type="text" id="e_mail" size="58"></td>
</tr>
<tr>
<td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">홈페이지 (HomePage)</span> </div></td>
<td><input name="homepage" type="text" id="homepage" size="58"></td>
</tr>
<tr>
<td valign="bottom"><div align="right" class="style5"><span class="style6">*</span> <span class="style7">제 목 (Subject)</span> </div></td>
<td><input name="subject" type="text" id="subject" size="58"></td>
</tr>
<tr>
<td valign="top"><div align="right" class="style5">
<p><br>
<span class="style6">*</span> <span class="style7">내 용 (Contents)</span> </p>
</div></td>
<td><textarea name="contents" cols="57" rows="8" id="contents"></textarea></td>
</tr>
<tr align="right">
<td colspan="2"><div align="right"></div>
<a href="javascript:CheckForm();"><img src="images/bt_ok.gif" width="70" height="40" border="0"></a><a href="javascript:document.forms.reset();"><img src="images/bt_cancel.gif" width="70" height="40" border="0"></a>
<div align="center"> </div></td>
</tr>
</table>
</form>
</body>
</html>
==================== 메일 보내는 PHP 파일(sendmail.php)이걸랑요....=========
<?
$headers .= "from:<$from>rn";
mail("test@test.net",$subject,$contents,$headers);
echo"메일을 발송했습니다.";
?>
==========================메일주소는 임의로 test....라고 고친거구요. 실제로는 해당메일을 썼구요... ========
도와주세요.
급한거라서 벌써 몇시간째 고민하면서 밤을 꼴딱 새워버렸답니당 T^T
댓글 5
-
poemen
2003.12.29 07:37
위에 폼하고 아래 PHP파일하고 전혀 매칭이 되어 있지 않습니다. 잠시만요 적어서 올려드릴께요 -
poemen
2003.12.29 07:57
아래 메일폼은 일단 기본 메일을 보내는 mail함수네요.
메일 함수의 기본사용법은
mail(받는사람 이메일주소,제목,메시지 내용, 추가 헤더 정보);
입니다.
그렇다면
위 함수에서 폼에 있는 폼네임 : e_mail,subject,contents 를 순서대로 받는다면
mail($e_mail,$subject,$contents);
폼에 적혀진 이멜과 제목과 내용은 전송이 되겠죠.
홈페이지주소와 메일주소 보내는 사람등을 포함시키는 어떠한 문구도 없네요.
그 정보는 헤더에 포함시켜서 보내면 되는거에요.
님이 짜신 PHP에는
$headers .= "from:<$from>\r\n";
이렇게 되어 있는데요.
입력폼에서 from 값이 넘어오질 않네요.
즉 보낸 사람 email주소쓰는 폼의 네임을 from 으로 해서 만드신다면
보낸사람 이멜은 포함 되겠죠.
성명 및 홈페이지까지 포함하고 싶다면 이런식으로 짜면 되겠죠.
$namefrom = "$name <$from> <$homepage>"; // 이런형식이죠 보낸이 유환 <poemen@ihanyang.ac.kr> <홈주소>이렇게 ^^;
$headers = "From:" .$namefrom ."Wn"; //실제론 From: 유환 <poemen@ihanyang.ac.kr> <홈주소>이렇게 나와요.
mail($e_mail,$subject,$contents,$headers); //헤더까지 포함해서 전송~
(되는지 해보진 않았지만 원리는 이래요..) -
poemen
2003.12.29 08:02
에 그런데 홈페이지 주소를 넣으면 약간 더 손을 봐야할 부분은요.
그 폼메일을 쓰는 사람이 홈페이지가 있을 수도 있고 없을 수도 있죠.
그럴경우에
if($homepage!=''){ //홈페이지 함수에 값이 없지 않다면(즉 있다면..)
$namefrom = "name <$from> <$homepage>";
$headers = "From:" .$namefrom. "Wn";
mail($e_mail,$subject,$contents,$headers);
}else{ //그렇지 않은 모든경우는..
$namefrom = "name <$from> "; //홈페이지를 보내지 빼고 메일을 전송해라~
$headers = "From:" .$namefrom. "Wn";
mail($e_mail,$subject,$contents,$headers);
} -
poemen
2003.12.29 08:05
상당히 여러가지 방법이 있어요.
설명이 엉터리 일지도 모르지만;; 도움이 되셨으면 좋겠어요. -
죠이
2003.12.29 13:07
poemen님 정말 감사합니다.
지금 가르쳐주신대로 다시 해보고 있습니다. 왠지 잘 될것 같은 예감이 드네요. ^^;
근데, 영진책에는 폼이름이 MAIL이고 PHP파일에는 from으로 되어있네요.
책에 오타가 있었나봐요. ~쩝 ㅡㅡ;
암튼, 가르쳐주신대로 다시 해보겠습니다. 감사합니다. ^^