2016-06-23 3 views
0

Когда я пытаюсь добавить заголовки в функцию почты, это не сработает. Однако мой код кажется хорошим.Из заголовков почты php

Возможно, мы не можем сделать динамический заголовок «От»?

var message = ""; 
var nomClient = $("#nom").val(); 
var mailClient = $("#mail").val(); 

$.ajax({ 
      method: "POST", 
      url: "traitement.php", 
      data: { monMessage: message, mailDuClient: mailClient, nomDuClient: nomClient } 
     }) 

     /* Si succès */ 
     .done(function() { 
      // Bug : le champs mail restait visible, donc on le cache 
      $("#mail").addClass("cacher"); 
      // Affiche le message de succès 
      $(".succes").animate().css("display", "block"); 
      // On attends 3,5 secondes puis on rafraichi la page 
      setTimeout(function(){location.reload();}, 3500); 
     }) 

     /* Si échec */ 
     .fail(function(jqXHR, textStatus, errorThrown) { 
      alert('Un problème est survenu'); 
     }); 

И это мой PHP код:

$to = "[email protected]"; 
$objet = "Nouvelle demande de devis"; 
$headers = 'From: '. $_POST['nomDuClient'] . ' <' .$_POST['mailDuClient']. '>'. "\r\n"; 
//'X-Mailer: PHP/' . phpversion(). "\r\n"; 

$mail = mail($to, $objet, $_POST['monMessage'], $headers); 
echo($mail); 

Почта правильно послал, но без «С»

+2

Вместо функции почты 'PHP' попробуйте использовать класс' PHPMailer' – Apoorv

+0

Я думаю, что у меня нет времени добавить новый класс. На самом деле почта правильно отправлена, если почтовый адрес в порядке! Например, работает [email protected], но [email protected] не работает ... – Emilien

+0

Если вы помещаете предоставленные пользователем данные ('$ _POST') прямо в свои почтовые заголовки, не дезинфицируя их, вы эффективно создаете mail. Спамеры ** будут искать и использовать. (например: путем установки '$ _POST ['mailDuClient']' на '[email protected]> \ r \ nДля: long [email protected] \ r \ nSubject: Спам \ r \ n \ r \ n') Вместо этого вы должны использовать библиотеку, такую ​​как PHPMailer, которая уже решила эту проблему. –

ответ

0

Я не вижу ничего плохого с кодом вы предоставили. Что вы можете сделать, так это:

$to = "[email protected]"; 
$objet = "Nouvelle demande de devis"; 
$headers = 'From: '. $_POST['nomDuClient'] . ' <' .$_POST['mailDuClient']. '>'. "\r\n"; 
//'X-Mailer: PHP/' . phpversion(). "\r\n"; 

$message = "headers:[$headers]\nmessage:\n".$_POST['monMessage'] 

$mail = mail($to, $objet, $message, $headers); 
echo($mail); 

Таким образом вы получите письмо с заголовками в самом сообщении. Там вы можете увидеть, правильны ли они или что-то отсутствует.

+0

Я не хочу помещать заголовки в почту ^^ Но если адрес электронной почты ошибочен (например, его не существует), почта также будет отправлена? – Emilien

+0

Я знаю, что вы не хотите помещать заголовки в почту. Но у вас проблемы с вашими заголовками, поэтому вам нужно отлаживать ваш код. Один из способов отладки - посмотреть, что находится в заголовках. Простой способ сделать это - поместить их в свой адрес электронной почты. О вашем несвязанном вопросе: Да, PHP попытается отправить все электронные письма, ваш почтовый сервер не сможет этого сделать, если почтовый адрес 'to:' не существует. –

+0

Я изменил свой код следующим образом: $ headers = 'From:'. $ _POST ['mailDuClient']. "\ Г \ п"; и теперь почта отправляется, НО НЕ С адресом [email protected] ... Если я ставлю другие адреса, это работает! @KIKO Software ваш код работает, в моей почте у меня хорошие значения для «От» и «До» – Emilien

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