2016-01-27 4 views
0

У меня есть сценарий php mail, который запускается следующим образом.Php mail script - не включая значения формы в отправленном письме

var theForm = document.getElementById('mailinglist-form'); 

new stepsForm(theForm, { 
    onSubmit : function(form) { 
    var messageEl = $('.final-message'); 
     // hide form 
     $('.simform-inner').addClass('hide'); 
     //remove cursor 
     $('#q2').blur(); 
     //get input field values data to be sent to server 
     post_data = { 
      'user_name'  : $('input[name=name]').val(), 
      'user_email' : $('input[name=email]').val() 
     }; 

     //Ajax post data to server 

$.post('mail.php', post_data, function(response){ 
     if(response.type == 'error'){ 

     //load json data from server and output message  
     messageEl.html('Sorry, please try again later.'); 
     $(messageEl).addClass('show'); 
      }else{ 
     messageEl.html(response.text); 
     $(messageEl).addClass('show'); 
     } 

     }, 'json'); 
    } 

}); 

Это для вызовов следующих файлов mail.php

<?php 
if($_POST) 
{ 
$to_email = "[email protected]"; //Recipient email 
$subject = "Mailing list request"; 
$from = '[email protected]';  
//check if its an ajax request, exit if not 
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { 

    $output = json_encode(array(//create JSON data 
     'type'=>'error', 
     'text' => 'Sorry Request must be Ajax POST' 
    )); 
    die($output); //exit script outputting json data 
} 

//Sanitize input data using PHP filter_var(). 
$user_name  = filter_var($_POST["user_name"], FILTER_SANITIZE_STRING); 
$user_email  = filter_var($_POST["user_email"], FILTER_SANITIZE_EMAIL); 

//additional php validation 
if(strlen($user_name)<3){ // If length is less than 3 it will output JSON error. 
    $output = json_encode(array('type'=>'error', 'text' => 'Name is too short or empty!')); 
    die($output); 
} 
if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation 
    $output = json_encode(array('type'=>'error', 'text' => 'Please enter a valid email!')); 
    die($output); 
} 
//email body 
$message_body = $message."".$user_name." wants to sign up to your mailing list. Details below:\r\n\nName : ".$user_name."\r\nEmail : ".$user_email."\r\n"; 

//proceed with PHP email. 
$headers = 'From: '.$from.'' . "\r\n" . 
'Reply-To: '.$from.'' . "\r\n" . 
'X-Mailer: PHP/' . phpversion(); 

$send_mail = mail($to_email, $subject, $message_body, $headers); 

if(!$send_mail) 
{ 
    //If mail couldn't be sent output error. Check your PHP email configuration (if it ever happens) 
    $output = json_encode(array('type'=>'error', 'text' => 'Sorry, please try again later.')); 
    die($output); 
}else{ 
    $output = json_encode(array('type'=>'message', 'text' => 'All done. Thanks for signing up.')); 
    die($output); 
} 
} 
?> 

Теперь все это, кажется, работает, он посылает по электронной почте с именем пользователей и адрес электронной почты на указанный адрес электронной «myemail» от " anotheremail».

Что действительно странно в том, что когда-то нет имени пользователя или адреса электронной почты только остальное сообщение.

Может ли кто-нибудь сказать мне, что происходит здесь, я наткнулся на дорожный блок на этом.

спасибо и извините за плохо отформатированный код ...: P

+1

Что сказал Пол, но также не использовать отправленный адрес как адрес From - это приведет к сбою проверки SPF. Отправьте его с собственного адреса yoru и используйте адрес отправления в качестве ответа, как вы это делаете. Кроме того, не помещайте свои вопросы как PHPMailer, если вы его не используете. – Synchro

ответ

1

Я удивлен, что это просто не утончаются не работает.

$from = '[email protected]' < - не имеет ; в конце ... Предположил бы, что двигатель php сделает исключение из этого.

+0

Хорошо, извините, ясно у меня есть; в заявлении, но удалил его для сообщения. Кроме того, они не являются реальными адресами электронной почты, которые я использую. Адрес моей почты - мой личный адрес электронной почты, на который я хочу отправить электронные письма. Для одного из них я просто использую [email protected] Он работает каждый раз, когда я его тестирую, но время от времени мы получаем и отправляем сообщения по электронной почте без каких-либо подробностей. Спасибо за ваши комментарии относительно phpmailer. Я отредактирую – user2541153

Смежные вопросы