Problème de réception de mail via formulaire (send.php)

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème de réception de mail via formulaire (send.php)

Re: Problème de réception de mail via formulaire (send.php)

par @rthur » 10 avr. 2017, 14:19

Il faut que tu essaye par toi même pour apprendre.
La doc PHP est bien faite avec des exemples : http://php.net/var_dump

Essaye et dis nous ce que tu ne réussis pas à faire.

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 10 avr. 2017, 06:09

Pourrais-tu m'indiquer comment ?
Comme je l'ai dit, je suis vraiment pas calé sur le PHP.
Merci

Re: Problème de réception de mail via formulaire (send.php)

par @rthur » 09 avr. 2017, 08:49

Ajoute un var_dump() autour de ton appel à la fonction mail() pour voir ce qui est renvoyé, et commente ta fonction header() pour désactiver la redirection et voir les messages.

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 09 avr. 2017, 06:25

Désolé pour le manque de précison de mes réponses, je ne suis vraiment pas calé en PHP.
Voici le contenu du "send.php :
<?php
$mail = '[email protected]'; // Déclaration de l'adresse de destination.
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}
//=====Déclaration des messages au format texte et au format HTML.
$message_txt = "Message from : \n".$_POST['name']."\n". "Email : \n".$_POST['address']."\n".$_POST['message']."\n";
$message_html = "<html><head></head><body>".$message_txt."</body></html>";
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = "Informations";
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"Entreprise\"<[email protected]>".$passage_ligne;
$header.= "Reply-to: \"Entreprise\" <[email protected]>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====Création du message.
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
//=====Ajout du message au format texte.
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
//==========
 
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
 
//=====Ajout du message au format HTML.
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
 
//=====On ferme la boundary alternative.
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//==========
 
$message.= $passage_ligne."--".$boundary.$passage_ligne;
//========== 

//=====Récupération des infos 
 //$name = $_POST['name'];
 //$address = $_POST['address'];
 //$corp_message = $_POST['message'];
 // mail()
 //==========
 
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========

header("Location: index.html");      
  exit();
 
?>

Re: Problème de réception de mail via formulaire (send.php)

par @rthur » 08 avr. 2017, 22:25

Que te renvoie la fonction mail() quand tu l'appelle dans ton script ?
true ?

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 08 avr. 2017, 16:52

Voici la réponse apporté par l'hébergeur :
Thank you for contacting us. I'm sorry you're having this trouble. I'll be more than happy to help. Unfortunately, we are not able to determine where the problem is in your website's coding, because when we test your mail form, nothing happens on the server. Our mail logs do not show that anything at all happened. I recommend that you have your developer go through the code to make sure that it is executing properly. I would suggest enabling error logging in your php.ini to see if the mail form is generating PHP errors.

Pour info, après vérification, e fichier php.ini est vierge.

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 07 avr. 2017, 10:38

Je n'ai pas accès à ces infos, je viens de les demander au client.

Re: Problème de réception de mail via formulaire (send.php)

par @rthur » 07 avr. 2017, 09:03

C'est à dire qu'ils ne "passent pas" ?
Tu as quoi dans les logs de ton serveur mail ?

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 07 avr. 2017, 08:07

Bonjour à tous,
Nouveaux tests ce matin,
En checkant les logs ce matin, il apparait que les mails ne passent pas dans la version anglaise.
J'ai dupliqué la version italienne vers l'anglaise (formulaire et send.php), même résultat. Ce n'est visiblement pas un problème de formulaire ni du "send.php"

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 06 avr. 2017, 10:50

2) As-tu testé avec des e-mails de destinataire chez différents fournisseurs de boites mail (Gmail, Yahoo, Orange...) ? Est-ce que le problème de non-réception est global ou ne concernerait qu'un seul fournisseur de boites mail ?
Réponse : j'ai testé avec une adresse gmail, même résultat.

Il faut que tu testes sur au moins 3 providers de mail différents pour être sûr que ce ne soit pas un pb de provider de mail.
Réponse : Je viens de tester avec mon adresse pro, une avec Yahoo.fr et la derniere en hotmail : Même résultat

4) Est-ce que le mail est bien envoyé par le serveur ? Pour cela il faut regarder dans les logs du serveur mail (ou demander à son hébergeur)
Réponse : Oui car cela fonctionne avec la version italienne

Non, sans regarder les logs du serveur de mail tu ne peux pas être sûr que le mail est bien parti.
Regarde dans les logs donc.
Réponse : je n'ai pas les accès. J'ai demandé au client de se rapprocher de l'hébergeur, celui indique que tout fonctionne.

5) Est-ce que l'e-mail indiqué en expéditeur du mail automatique que tu envoies est bien autorisé à envoyer ce mail via une directive SPF
Réponse : Bonne question, je suppose que oui. Comment le vérifier ?

Par ici :
https://mxtoolbox.com/spf.aspx
Tu mets le nom de domaine que tu utilises comme expediteur et l'IP de ton serveur qui effectues l'envoi du mail.
Réponse : Test effectué, tout est ok

:( :( :(

Re: Problème de réception de mail via formulaire (send.php)

par @rthur » 05 avr. 2017, 23:48

2) As-tu testé avec des e-mails de destinataire chez différents fournisseurs de boites mail (Gmail, Yahoo, Orange...) ? Est-ce que le problème de non-réception est global ou ne concernerait qu'un seul fournisseur de boites mail ?
Réponse : j'ai testé avec une adresse gmail, même résultat.
Il faut que tu testes sur au moins 3 providers de mail différents pour être sûr que ce ne soit pas un pb de provider de mail.
4) Est-ce que le mail est bien envoyé par le serveur ? Pour cela il faut regarder dans les logs du serveur mail (ou demander à son hébergeur)
Réponse : Oui car cela fonctionne avec la version italienne
Non, sans regarder les logs du serveur de mail tu ne peux pas être sûr que le mail est bien parti.
Regarde dans les logs donc.
5) Est-ce que l'e-mail indiqué en expéditeur du mail automatique que tu envoies est bien autorisé à envoyer ce mail via une directive SPF
Réponse : Bonne question, je suppose que oui. Comment le vérifier ?
Par ici :
https://mxtoolbox.com/spf.aspx
Tu mets le nom de domaine que tu utilises comme expediteur et l'IP de ton serveur qui effectues l'envoi du mail.

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 05 avr. 2017, 17:14

Merci Moogli pour tes conseils,
Je vais tacher de voir ça pour le script...
Concernant l'architecture, tu as surement raison. Il y a deux raisons à cela, la première est que je ne suis pas encore assez calé et la seconde est que l'italien n'est arrivé que bien après.

Re: Problème de réception de mail via formulaire (send.php)

par moogli » 05 avr. 2017, 14:28

salut,

si depuis le formulaire anglais tu utilises le script italien cela fonctionne ? (un bon moyen de faire fonctionner la chose rapidement)

coté archi, c'est pas une super idée d'avoir dupliqué le site pour chaque langue, il existe de solution permettant de gérer l'internationalisation (suivant les framework utilisés ou même sans). La tu va avoir double maintenance (c'est chiant et il y a des risques que les deux codes vive manière différente et finissent par être différent alors qu'il ne devrait pas l'être ;)


@+

Re: Problème de réception de mail via formulaire (send.php)

par smiley1810 » 05 avr. 2017, 14:11

Bonjour et merci pour ton intervention.

Pour rappel, la même adresse mail est utilisée dans les deux send.php

1) Est-ce que le mail n'est pas reçu dans la boite de spam (ou Courrier Pêle-mêle sous Outlook) ?
Réponse : Non

2) As-tu testé avec des e-mails de destinataire chez différents fournisseurs de boites mail (Gmail, Yahoo, Orange...) ? Est-ce que le problème de non-réception est global ou ne concernerait qu'un seul fournisseur de boites mail ?
Réponse : j'ai testé avec une adresse gmail, même résultat.

3) Est-ce que le serveur qui envoie le mail n'est pas blacklisté : https://mxtoolbox.com/blacklists.aspx
Réponse : non, je viens de vérifier

4) Est-ce que le mail est bien envoyé par le serveur ? Pour cela il faut regarder dans les logs du serveur mail (ou demander à son hébergeur)
Réponse : Oui car cela fonctionne avec la version italienne

5) Est-ce que l'e-mail indiqué en expéditeur du mail automatique que tu envoies est bien autorisé à envoyer ce mail via une directive SPF
Réponse : Bonne question, je suppose que oui. Comment le vérifier ?

Re: Problème de réception de mail via formulaire (send.php) URGENT

par @rthur » 05 avr. 2017, 13:02

Bonjour,

Voici une liste des choses que tu peux vérifier pour tenter de trouver l'origine du problème :

1) Est-ce que le mail n'est pas reçu dans la boite de spam (ou Courrier Pêle-mêle sous Outlook) ?
2) As-tu testé avec des e-mails de destinataire chez différents fournisseurs de boites mail (Gmail, Yahoo, Orange...) ? Est-ce que le problème de non-réception est global ou ne concernerait qu'un seul fournisseur de boites mail ?
3) Est-ce que le serveur qui envoie le mail n'est pas blacklisté : https://mxtoolbox.com/blacklists.aspx
4) Est-ce que le mail est bien envoyé par le serveur ? Pour cela il faut regarder dans les logs du serveur mail (ou demander à son hébergeur)
5) Est-ce que l'e-mail indiqué en expéditeur du mail automatique que tu envoies est bien autorisé à envoyer ce mail via une directive SPF