Page 1 sur 2

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

Posté : 05 avr. 2017, 09:53
par smiley1810
Bonjour à tous,

Je suis vraiment en galère... :cry:

J'ai réalisé pour un client, un site en deux langues (anglais et italien).
C'est du html5 css3 bootstrap.

il est structuré comme suit :
www.son-nom.com (anglais)
www.son-nom.com/ita (italien)

Dans chacun d'entre eux, se trouve un formulaire de contact. Ils sont strictement identiques, seul la langue change (anglais ou italien) en front end dans le formulaire. Chaque formulaire dispose de son propre fichier « send.php » dans le repertoire racine de chaque langue; là aussi, ils sont parfaitement identiques.
Le site est en ligne depuis environ 1 mois; nous avions fait tous les tests de rigueur et tout fonctionnait sans problème.

Depuis 3 jours, le problème que je rencontre est le suivant :
Le client ne reçoit plus ses mails provenant de la version anglaise alors que dans la version italienne, tout fonctionne. Le message semble partir, mais il ne reçoit rien.

J'ai un clone de son site sur le mien et tout fonctionne normalement.

Je ne suis vraiment pas calé en PHP, j'ai testé PHPMailer, le résultat est encore pire (messages d'erreur en cascade)

Quelqu'un aurait-il une idée du problème ? :priere:

Merci d'avance

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

Posté : 05 avr. 2017, 13:02
par @rthur
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

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

Posté : 05 avr. 2017, 14:11
par smiley1810
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)

Posté : 05 avr. 2017, 14:28
par moogli
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)

Posté : 05 avr. 2017, 17:14
par smiley1810
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)

Posté : 05 avr. 2017, 23:48
par @rthur
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)

Posté : 06 avr. 2017, 10:50
par smiley1810
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)

Posté : 07 avr. 2017, 08:07
par smiley1810
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)

Posté : 07 avr. 2017, 09:03
par @rthur
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)

Posté : 07 avr. 2017, 10:38
par smiley1810
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)

Posté : 08 avr. 2017, 16:52
par smiley1810
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)

Posté : 08 avr. 2017, 22:25
par @rthur
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)

Posté : 09 avr. 2017, 06:25
par smiley1810
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)

Posté : 09 avr. 2017, 08:49
par @rthur
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)

Posté : 10 avr. 2017, 06:09
par smiley1810
Pourrais-tu m'indiquer comment ?
Comme je l'ai dit, je suis vraiment pas calé sur le PHP.
Merci