html 폼메일php 연결하기 채택완료
안녕하세요. 웹 관련 초보자 입니다ㅠㅠ.
html에 php를 연결시켜 메일을 보낼 수 있도록 해야해서, 인터넷에 찾아 집어넣었습니다.
전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다. 어떤 점이 잘못된건지 조언 부탁드려도 될까요?
contact.html
Copy
<body>
<form name="contactform" method="post" action="send.php" id="mail_form">
<div class="form_1 cf">
<ul>
<li>
<label for="first_name">Name</label>
</li>
<li>
<input type="text" name="first_name" class="first_name" minlength="1" maxlength="50" required >
<!-- maxlegth는 최대 문자수 -->
</li>
</ul>
<ul>
<li>
<label for="form_tel">Tel</label>
</li>
<li>
<input type="form_tel" name="form_tel" class="form_tel" maxlength="80" required >
</li>
</ul>
</div>
<div class="form_2 cf">
<ul>
<li>
<label for="form_fax">Fax</label>
</li>
<li>
<input type="form_fax" name="form_fax" class="form_fax" maxlength="80" required >
</li>
</ul>
<ul>
<li>
<label for="form_email">Email</label>
</li>
<li>
<input type="form_email" name="form_email" class="form_email" maxlength="80" required >
</li>
</ul>
</div>
<ul class="f-address">
<li>
<label for="form_address">Address</label>
</li>
<li>
<input type="form_address" name="form_address" class="form_address" maxlength="80" required >
</li>
</ul>
<ul>
<li>
<label for="comments">Inquiry</label>
</li>
<li>
<textarea name="comments" cols="50" rows="10" required class="comments" style="resize:none;"></textarea>
</li>
</ul>
<ul class="formmail_submit">
<li class="cf">
<button type="submit" value="전송하기" class="btn_submit">Send</button>
<button name="재설정" type="reset" value="다시작성" class="btn_submit">Rewrite</button>
</li>
</ul>
</form>
</body>
send.php
Copy
<?
$tomail = "xxx@naver.com";
function error($text){
echo "
<script language=javascript>
window.alert('$text')
history.go(-1)
<script>";
exit;
}
function msg($text){
echo "
<script language=javascript>
window.alert('$text')
top.location.href = 'contact.html'
<script>";
exit;
}
if (!$first_name) {error('Please Write Your Name.');}
if (!$form_tel) {error('Please Write Your Tel.');}
if (!$form_fax) {error('Please Write Your Fax.');}
if (!$form_email) {error('Please Write Your Email.');}
if (!$form_address) {error('Please Write Your Address.');}
if (!$comments) {error('Please Write Inquiry.');}
$mailheaders = "Return-Path: $email |r|n";
$mailheaders .= "From: $name <$email>|r|n";
$body = "이름: $first_name |r|n";
$body = "전화번호: $form_tel |r|n";
$body = "팩스: $form_fax |r|n";
$body = "이메일: $form_email |r|n";
$body = "주소: $form_address |r|n";
$body = "내용: $comments |r|n";
$result=mail($tomail, $body, $mailheaders);
if($result) {
msg('Mail has been sent successfully.');
}
else {
error('The mail has failed to send.');
}
?>
답변 2개
채택된 답변
+20 포인트
BiHon
5년 전
1. <? → <?php 추천
2. send.php 파일 내용을 아래처럼 변경하고, 폼에서 입력한 값이 뜨는지 확인부터 해보세요.
Copy
Input values = <?php print_r($_POST);
3. 옛날 방식의 변수라 그렇습니다. 2번에 적은 변수를 사용해야 합니다.
Copy
$first_name → $_POST['first_name'] // 또는 $_REQUEST['first_name'] (특성 이해하고 사용)
4. |r|n → \r\n
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
5년 전
BiHon
5년 전
send.php 파일 내용을 더도 말고 덜도 말고 딱 아래처럼만 저장하면 됩니다.
[code]
Input values = <?php print_r($_POST);
[/code]
contact.html에서 아무 내용이나 입력하고, 전송하기 버튼을 눌렀을 때
화면에 Input values = ... 입력된 내용들 뜨면 정상입니다.
"전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다."라고 했기 때문에 확인용이었죠.
화면에 내용이 정상적으로 떴다면, 변수들을 모두 바꿔주면 됩니다.
그런데 " 내에서는 {}로 감싸주면 됩니다.
[code]
$body = "이름: {$_POST['first_name']}\r\n";
[/code]
그리고, $mailheaders에 $name, $email은 없으니 상단에 $name = '원하는 이름'; 추가,
$email은 $_POST['from_email'] 등 정상적인 값이 들어가도록 바꿔주면 됩니다.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ Dealing with Forms (폼 다루기)
- https://www.php.net/manual/en/tutorial.forms.php
- http://docs.php.net/manual/kr/tutorial.forms.php
+ mail()
- https://www.php.net/manual/en/function.mail
- http://docs.php.net/manual/kr/function.mail.php
mail() 함수의 예제를 통해, 가장 간단한 코드로 메일 발송 테스트부터 해보면 됩니다.
환경에 따라 다양한 경우가 있어 이하 생략합니다.
[code]
Input values = <?php print_r($_POST);
[/code]
contact.html에서 아무 내용이나 입력하고, 전송하기 버튼을 눌렀을 때
화면에 Input values = ... 입력된 내용들 뜨면 정상입니다.
"전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다."라고 했기 때문에 확인용이었죠.
화면에 내용이 정상적으로 떴다면, 변수들을 모두 바꿔주면 됩니다.
그런데 " 내에서는 {}로 감싸주면 됩니다.
[code]
$body = "이름: {$_POST['first_name']}\r\n";
[/code]
그리고, $mailheaders에 $name, $email은 없으니 상단에 $name = '원하는 이름'; 추가,
$email은 $_POST['from_email'] 등 정상적인 값이 들어가도록 바꿔주면 됩니다.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ Dealing with Forms (폼 다루기)
- https://www.php.net/manual/en/tutorial.forms.php
- http://docs.php.net/manual/kr/tutorial.forms.php
+ mail()
- https://www.php.net/manual/en/function.mail
- http://docs.php.net/manual/kr/function.mail.php
mail() 함수의 예제를 통해, 가장 간단한 코드로 메일 발송 테스트부터 해보면 됩니다.
환경에 따라 다양한 경우가 있어 이하 생략합니다.
댓글을 작성하려면 로그인이 필요합니다.
5년 전
경로가 올바른지 체크하시고
해당 send.php 파일의 소스를 점검해보셔야 할듯합니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
5년 전
안녕하세요,그누위즈님! 먼저 답변 감사드립니다.
경로같은 경우, 모두 한 폴더에 들어가있어 별 이상이 없는 것 같습니다ㅠㅠ..
제가 자바스크립트를 잘 몰라 소스를 점검하고 싶지만 점검할 수 있는 방법이 없어 질문게시판에 올리게 되었습니다.
혹시 시간의 여유가 되신다면 소스를 좀 더 봐주실수 있으실까요?
경로같은 경우, 모두 한 폴더에 들어가있어 별 이상이 없는 것 같습니다ㅠㅠ..
제가 자바스크립트를 잘 몰라 소스를 점검하고 싶지만 점검할 수 있는 방법이 없어 질문게시판에 올리게 되었습니다.
혹시 시간의 여유가 되신다면 소스를 좀 더 봐주실수 있으실까요?
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
이렇게나 친절하게 설명해주셧지만, 완전히 이해하지를 못해서요ㅠㅠ..
괜찮으시다면 조금 더 봐주실 수 있을까요?
1. <? 에서 <?php 로 수정했습니다.
2. 어느부분에 저렇게 변경해야하는지 모르겠습니다...
3. 밑에 두줄대로 수정하는게 맞나요?
[code]
if $_POST['first_name'] {error('Please Write Your Name.');}
if $_POST['form_tel'] {error('Please Write Your Tel.');}
if $_POST['form_fax'] {error('Please Write Your Fax.');}
if $_POST['form_email'] {error('Please Write Your Email.');}
if $_POST['form_address'] {error('Please Write Your Address.');}
if $_POST['comments'] {error('Please Write Inquiry.');}
$mailheaders = "Return-Path: $email \r\n";
$mailheaders .= "From: $name <$email>\r\n";
$body = "이름: $_POST['first_name'] \r\n";
$body = "전화번호: $_POST['form_tel'] \r\n";
$body = "팩스: $_POST['form_fax'] \r\n";
$body = "이메일: $_POST['form_email'] \r\n";
$body = "주소: $_POST['form_address'] \r\n";
$body = "내용: $_POST['comments'] \r\n";
[/code]