2014-07-12 2 views
0

Ajax를 통해 제출 된 양식을 작성한 다음 PHP의 mail() 함수로 처리했습니다. 양식 유효성 검사 및 양식 제출이 완벽하게 작동합니다 (데이터 로그를 콘솔에 기록하고 성공 메시지를받을 수 있음). 그러나 양식에서 이메일을받지 못했습니다. 나는 그것이 process.php라고 가정하고있다.내 양식을 보내지 않는 process.php의 문제점은 무엇입니까?

이 작업을 처음 수행 한 것이므로 포인터/코드 개선이 많은 도움이 될 것입니다.

자바 스크립트 :

var name = $('#name').val(); 
var email = $('#email').val(); 
var message = $('#message').val(); 

var dataString = 'name=' + name + '&email=' + email + '&message=' + message; 
$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: dataString, 
    success: function() { 
    alert('success'); 
    } 
}); 

PHP : 나는 문제가 PHP 메일() 메소드 내에있는 참으로 생각

<?php 
    $myemail = "[email protected]"; 
    $subject = "Subject"; 
    $message = " 
    Name: $name 
    E-mail: $email 
    Message: $message 
    "; 

    mail($myemail, $subject, $message); 
?> 
+0

을 그리고 당신이 메일 서버를 설정했다, PHP는 전자 메일을 보낼 것입니다 방법을 다른 :

는 SO이 작동 결국 무엇인가? – adeneo

+0

당신은 먼저 값을 검색하지 않습니다 ... $ _POST [ 'message'] 등을 사용합니다 ... – Ashish

+0

@adeneo 그게 뭔지 모르겠어요, 설명해 주시겠습니까? – Jake

답변

1

. 그냥 만들어가()를 호출하고,

echo 'I should be sending mail now!'; 
exit; 

로 교체에 그런 다음 Ajax 호출을 변경 메일을 주석으로되어 있는지 :

$.ajax({ 
    type: "POST", 
    url: "process.php", 
    data: dataString, 
    success: function (response) { 
    alert(response); 
    } 
}); 

지금 폼을 서버에 보내고, 경고 상자에 무엇이 표시되는지 확인하십시오. 예상되는 문자열을 얻은 경우 실제로 메일을 보낼 수 있도록 SMTP 서버를 설정해야합니다. 또 다른 옵션은 외부 메일 서버를 사용하는 것이지만 다른 이메일 계정을 사용해야합니다.

예를 들어 phpmailer를 확인해보십시오.

+0

Ajax 비트와 보내는 메일이 확실히 작동하고 있습니다 (전자 메일을받는 중입니다). 그러나 전자 메일은 비어 있습니다. 나는 데이터를 올바르게 참조하고 있다고 생각하지 않는다. – Jake

+0

이것은 얼마 전 이었지만 나는 돌아와서 의견을 말할 것이라고 생각했습니다. 당신은 정확했고 swiftmailer를 사용하여 모든 문제를 해결했습니다. – Jake

0

덕분에 도움을 얻을 수 있었기 때문에 해결해 보았습니다.

예상대로 Ajax가 모두 양호했습니다. 이메일은 내 서버 메일 PHP를 사용하지 않고 로컬로 실행 중이기 때문에 보내지 않았습니다. 양식의 데이터가 참조되지 않아 빈 이메일이 반환됩니다.

<?php 
    $myemail = "[email protected]"; 
    $subject = "Subject"; 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 

    $body = " 
    Name: $name 
    Email: $email 
    Message: $message 
    "; 

    mail($myemail, $subject, $body); 
?> 
관련 문제