질문/조언질답게시판

  <div class="media-container-column col-lg-8" data-form-type="formoid">
         

 <form class="mbr-form" action="mail.php" method="post">
                        
                        <div class="row row-sm-offset">
                            <div class="col-md-4 multi-horizontal" data-for="name">
                                <div class="form-group">
                                    <label class="form-control-label mbr-fonts-style display-5" for="name-form1-x">이름</label>
                                    <input type="text" class="form-control" name="name" data-form-field="Name" required="" placeholder="성함을 입력하십시오." id="name-form1-x">
                                </div>
                            </div>
                            <div class="col-md-4 multi-horizontal" data-for="email">
                                <div class="form-group">
                                    <label class="form-control-label mbr-fonts-style display-5" for="email-form1-x">이메일</label>
                                    <input type="email" class="form-control" name="email" data-form-field="Email" required="" placeholder="이메일주소를 입력하십시오." id="email-form1-x">
                                </div>
                            </div>
                            <div class="col-md-4 multi-horizontal" data-for="phone">
                                <div class="form-group">
                                    <label class="form-control-label mbr-fonts-style display-5" for="phone-form1-x">전화번호</label>
                                    <input type="tel" class="form-control" name="phone" data-form-field="Phone" placeholder="휴대폰번호를 입력하십시오." id="phone-form1-x">
                                </div>
                            </div>
                        </div>
                        <div class="form-group" data-for="message">
                            <label class="form-control-label mbr-fonts-style display-5" for="message-form1-x">문의 내용을 작성하여 주십시오.</label>
                            <textarea type="text" class="form-control" name="message" rows="7" data-form-field="Message" placeholder="상담내용을 입력하십시오." id="message-form1-x"></textarea>
                        </div>
            
                        <span class="input-group-btn"><button href="" type="submit" class="btn btn-primary btn-form display-5">상담신청</button></span>
                    </form>                    

</div>

 

mail.php는 아래와 같습니다.

 

<?php

if(isset($_POST['email'])) {
 
    $email_to = "test@gmail.com";
    $email_subject = "상담요청이 도착하였습니다.";    
     
    $email = $_POST['email'];
    $name = $_POST['name'];
    $phone = $_POST['phone'];
    $message = $_POST['message'];
         
    $email_message = "Message:\n\n";
     
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
 
    function getUserIpAddr()
    {
        if (!empty($_SERVER['HTTP_CLIENT_IP']))
        {
            return $_SERVER['HTTP_CLIENT_IP'];
        }
        else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
            return $_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
            return $_SERVER['REMOTE_ADDR'];
        }
    }    
 
    $email_message .= "IP address: ".getUserIpAddr()."\n";
   
    $email_message .= "Name: ".clean_string($name)."\n";
    $email_message .= "Email: ".clean_string($email)."\n";
    $email_message .= "Phone: ".clean_string($phone)."\n";
    $email_message .= "Message: ".clean_string($message)."\n";
 
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/plain;charset=UTF-8" . "\r\n";
    $headers .= 'From: '.$email. "\r\n";
 
    if (@mail($email_to, $email_subject, $email_message, $headers)) {
        header('Location: success.html');
    } else {
        header('Location: error.html');
    }
}
?>

 

한사이트는 정상적으로 success.html로 넘어가면서 메일이 오는데

 

똑같이 복사하여 만든 사이트는 error.html로만 넘어가며 메일이 오질 않습니다.

 

어떤 문제를 의심해봐야할까요? 똑같은 cafe24 웹호스팅입니다.

  • profile

    mail() 함수를 사용하여 웹호스팅 계정에서 메일을 발송하는 것은 원래 안 되는 게 정상이고, 되는 게 이상한 겁니다. 되는 쪽은 최근에 다른 고객이 스팸을 발송한 적이 없어서 그나마 받아줄 가능성이 높은데, 이것도 오래 안 가요.

  • profile ?
    그럼 이를 해결하기 위해서는 어떤 방법을 적용해야할련지 여쭈어 보고 싶습니다.
    기존처럼 formid.net API를 통해서 발송 받으면 메일이 정상적으로 오는데 어디서 날라오는지 주소가 적혀서 이를 감추기 위해서 직접 발송을 할려고 합니다.
  • ? profile
    관리자 한 사람만 받는 건데 사이트 주소가 찍힌다고 문제가 되나요?
    XE 사용자들이 많이 쓰는 우리메일 API나 그 밖의 메일 발송 전문 API들을 알아보세요.
    그것도 아니면 이미 보유하고 계신 지메일 계정을 사용해서 SMTP로 발송하는 방법도 있습니다.
  • profile ?
    관리자가 아니라 다른사람들에게 보내는거라 주소를 감춰야합니다.
    XE로 제작된 사이트가 아니라 html로만 제작되어있습니다.
    지메일 계정을 이용한 smtp 발송 방법 검색한번해보도록하겠습니다. 감사합니다.
  • ? profile
    다른 사람들에게 보내는 거면 더욱더 전문 API나 SMTP를 사용해서 스팸으로 차단될 가능성을 최소화해야 합니다. 나 혼자 볼 메일이라면 내 메일 계정에서 스팸필터에 안 걸리게 설정해 놓으면 그만이지만, 다른 사람들은 그냥 안 보고 마니까요.

    또한... 받는이 메일을 고정하고 보낸이 메일을 자유롭게 입력받는 것도 가능하고, 보낸이 메일을 고정하고 받는이 메일을 불특정 다수로 하는 것도 가능하지만, 보낸이와 받는이를 모두 불특정 다수로 할 수는 없습니다. 발신자 조작으로 간주하여 스팸 차단 들어갑니다.
  • profile ?
    감사합니다. 사이트마다 상담신청 내용을 메일로 보내주는건데 사이트마다 관리자가 달라서요...
    맨첨 만든사이트에서는 설정된 네이버 메일로 메일이 잘 발송되는데 두번째 사이트에서만 안되니까 당황스럽더라구요....똑같은 웹호스팅 환경에 똑같은 파일인데 말이죠.. 늦은시간 답변 정말 감사드립니다.
  • profile
    단순하게 mail함수만 써서 네이버, 다음, 지메일 등등으로 발송 테스트해보세요.

    <?
    mail("a@a.com", "테스트", "테스트", "a@도메인주소", -f."a@도메인주소");
    ?>

    이렇게 해서 보냈을때 수신되는지 메일서버별로 테스트를 해보세요.
    헤더 부분 뒤에 -f메일주소 요부분이 있고 없고도 영향을 미치더군요.

    스팸메일로 가버리는건 별개의 문제이구요.

    그리고 웹호스팅은 보통 하루에 400~500통의 발송제한을 걸고 있고, 다른 유져가 메일을 보냈으면 그 다음에 보내느라 시간이 걸리기도 합니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...