<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 웹호스팅입니다.
댓글 7
mail() 함수를 사용하여 웹호스팅 계정에서 메일을 발송하는 것은 원래 안 되는 게 정상이고, 되는 게 이상한 겁니다. 되는 쪽은 최근에 다른 고객이 스팸을 발송한 적이 없어서 그나마 받아줄 가능성이 높은데, 이것도 오래 안 가요.
기존처럼 formid.net API를 통해서 발송 받으면 메일이 정상적으로 오는데 어디서 날라오는지 주소가 적혀서 이를 감추기 위해서 직접 발송을 할려고 합니다.
XE 사용자들이 많이 쓰는 우리메일 API나 그 밖의 메일 발송 전문 API들을 알아보세요.
그것도 아니면 이미 보유하고 계신 지메일 계정을 사용해서 SMTP로 발송하는 방법도 있습니다.
XE로 제작된 사이트가 아니라 html로만 제작되어있습니다.
지메일 계정을 이용한 smtp 발송 방법 검색한번해보도록하겠습니다. 감사합니다.
또한... 받는이 메일을 고정하고 보낸이 메일을 자유롭게 입력받는 것도 가능하고, 보낸이 메일을 고정하고 받는이 메일을 불특정 다수로 하는 것도 가능하지만, 보낸이와 받는이를 모두 불특정 다수로 할 수는 없습니다. 발신자 조작으로 간주하여 스팸 차단 들어갑니다.
맨첨 만든사이트에서는 설정된 네이버 메일로 메일이 잘 발송되는데 두번째 사이트에서만 안되니까 당황스럽더라구요....똑같은 웹호스팅 환경에 똑같은 파일인데 말이죠.. 늦은시간 답변 정말 감사드립니다.
<?
mail("a@a.com", "테스트", "테스트", "a@도메인주소", -f."a@도메인주소");
?>
이렇게 해서 보냈을때 수신되는지 메일서버별로 테스트를 해보세요.
헤더 부분 뒤에 -f메일주소 요부분이 있고 없고도 영향을 미치더군요.
스팸메일로 가버리는건 별개의 문제이구요.
그리고 웹호스팅은 보통 하루에 400~500통의 발송제한을 걸고 있고, 다른 유져가 메일을 보냈으면 그 다음에 보내느라 시간이 걸리기도 합니다.