html 폼메일php 연결하기

html 폼메일php 연결하기

QA

html 폼메일php 연결하기

본문

안녕하세요. 웹 관련 초보자 입니다ㅠㅠ.

 

html에 php를 연결시켜 메일을 보낼 수 있도록 해야해서, 인터넷에 찾아 집어넣었습니다.

전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다. 어떤 점이 잘못된건지 조언 부탁드려도 될까요?

 

contact.html


<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


<?
$tomail = "*** 개인정보보호를 위한 이메일주소 노출방지 ***";
 
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

1. <? → <?php 추천

 

2. send.php 파일 내용을 아래처럼 변경하고, 폼에서 입력한 값이 뜨는지 확인부터 해보세요.


Input values = <?php print_r($_POST);

 

3. 옛날 방식의 변수라 그렇습니다. 2번에 적은 변수를 사용해야 합니다.


$first_name → $_POST['first_name'] // 또는 $_REQUEST['first_name'] (특성 이해하고 사용)

 

4. |r|n → \r\n

안녕하세요 bihon님! 진심으로 정성스럽게 답변해주셔서 감사합니다.

이렇게나 친절하게 설명해주셧지만, 완전히 이해하지를 못해서요ㅠㅠ..
괜찮으시다면 조금 더 봐주실 수 있을까요?

1. <? 에서 <?php 로 수정했습니다.

2. 어느부분에 저렇게 변경해야하는지 모르겠습니다...

3. 밑에 두줄대로 수정하는게 맞나요?


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";

send.php 파일 내용을 더도 말고 덜도 말고 딱 아래처럼만 저장하면 됩니다.


Input values = <?php print_r($_POST);


contact.html에서 아무 내용이나 입력하고, 전송하기 버튼을 눌렀을 때
화면에 Input values = ... 입력된 내용들 뜨면 정상입니다.
"전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다."라고 했기 때문에 확인용이었죠.

화면에 내용이 정상적으로 떴다면, 변수들을 모두 바꿔주면 됩니다.
그런데 " 내에서는 {}로 감싸주면 됩니다.

$body = "이름: {$_POST['first_name']}\r\n";


그리고, $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() 함수의 예제를 통해, 가장 간단한 코드로 메일 발송 테스트부터 해보면 됩니다.
환경에 따라 다양한 경우가 있어 이하 생략합니다.

경로가 올바른지 체크하시고

해당 send.php 파일의 소스를 점검해보셔야 할듯합니다.

안녕하세요,그누위즈님! 먼저 답변 감사드립니다.

경로같은 경우, 모두 한 폴더에 들어가있어 별 이상이 없는 것 같습니다ㅠㅠ..
제가 자바스크립트를 잘 몰라 소스를 점검하고 싶지만 점검할 수 있는 방법이 없어 질문게시판에 올리게 되었습니다.

혹시 시간의 여유가 되신다면 소스를 좀 더 봐주실수 있으실까요?

답변을 작성하시기 전에 로그인 해주세요.
전체 21
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT