이 페이지는 가로 메뉴에서 'Contact
'을 클릭하면 다른 html 페이지에로드됩니다.이메일을 보내기위한 Jquery와 PHP 문의 양식
전혀 실행되지 않게하려면 $(document).ready(function()
을 제거해야했습니다.
실제로 이메일을받지 못하는 것 외에는 모든 것이 작동하는 것처럼 보입니다. 아이디어가 있으십니까?
감사합니다. 여기
는 contact.html입니다 :<script type="text/javascript">
$("#submit_btn").click(function() {
//collect input field values
var user_name = $('input[name=name]').val();
var user_email = $('input[name=email]').val();
var user_message = $('textarea[name=message]').val();
//simple validation at client's end
//we simply change border color to red if empty field using .css()
var proceed = true;
if(user_name==""){
$('input[name=name]').css('border-color','red');
proceed = false;
}
if(user_email==""){
$('input[name=email]').css('border-color','red');
proceed = false;
}
if(user_message=="") {
$('textarea[name=message]').css('border-color','red');
proceed = false;
}
//everything looks good! proceed...
if(proceed)
{
//data to be sent to server
post_data = {'userName':user_name, 'userEmail':user_email, 'userMessage':user_message};
//Ajax post data to server
$.post('contact_me.php', post_data, function(data){
//load success massage in #result div element, with slide effect.
$("#result").hide().html('<div class="success">'+data+'</div>').slideDown();
//reset values in all input fields
$('#contact_form input').val('');
$('#contact_form textarea').val('');
}).fail(function(err) { //load any error data
$("#result").hide().html('<div class="error">'+err.statusText+'</div>').slideDown();
});
}
});
//reset previously set border colors and hide all message on .keyup()
$("#contact_form input, #contact_form textarea").keyup(function() {
$("#contact_form input, #contact_form textarea").css('border-color','');
$("#result").slideUp();
});
</script>
<fieldset id="contact_form">
<div id="result"></div>
<label for="name"><span>Name</span>
<input type="text" name="name" id="name" placeholder="Enter Your Name" />
</label>
<label for="email"><span>Email Address</span>
<input type="text" name="email" id="email" placeholder="Enter Your Email" />
</label>
<label for="message"><span>Message</span>
<textarea name="message" id="message" placeholder="Enter Your Name"></textarea>
</label>
<label><span> </span>
<button class="submit_btn" id="submit_btn">Submit</button>
</label>
</fieldset>
그리고 여기 contact_me.php에게 있습니다
<?php
if($_POST)
{
//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
die();
}
$to_Email = "@gmail.com"; //Replace with recipient email address
$subject = 'ContactUS'; //Subject line for emails
//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))
{
die();
}
//Sanitize input data using PHP filter_var().
$user_Name = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);
//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.
{
header('HTTP/1.1 500 Name is too short or empty!');
exit();
}
if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation
{
header('HTTP/1.1 500 Please enter a valid email!');
exit();
}
if(strlen($user_Message)<5) //check emtpy message
{
header('HTTP/1.1 500 Too short message! Please enter something.');
exit();
}
//proceed with PHP email.
$headers = "From: $user_Email\n" .
"Reply-To: $user_Email\n" .
"MIME-Version: 1.0\n" .
"Content-Type: text/html\n" .
"X-Mailer: PHP/" . phpversion();
@$sentMail = mail($to_Email, $subject, $user_Message .' -'.$user_Name, $headers);
if(!$sentMail)
{
header('HTTP/1.1 500 Couldnot send mail! Sorry..');
exit();
}else{
echo 'Hi '.$user_Name .', Thank you for your email! ';
echo 'Your email has already arrived in my Inbox, all I need to do is Check it.';
}
}
?>
솔루션 : 내가 Dreamhost를 사용하고 메일을 보내려고했다 DreamHost 서버에서 "From : @gmail"계정을 사용합니다. dreamhost @mydomain 이메일을 만들어서 거기에서 보내야했습니다. 전자 메일 로그를 확인하고이 오류를 보았습니다. 550 5.7.1 보낸 사람 도메인이 허용되지 않습니다. 여기에서 읽을 수 있습니다 : http://wiki.dreamhost.com/PHP_mail()
'@'을 제거하면 오류 메시지가 표시되지 않습니다. 또한 메일 서버를 설정 했습니까? –
@을 삭제하고 HTTP 500 오류를 추가하고 모든 헤더를 \ r \ n (으)로 변경했습니다. 그래도 작동이 안되는. 나는 Dreamhost에게 지원 티켓을 보냈습니다. – JavaNinja