Soumission de formulaire de contact avec adresse inexistante

Résolu/Fermé
-
 Celio -
Bonjour,

J'ai un formulaire de contact sur mon site web. Il fonctionne bien. Et ce y compris quand l'adresse électronique saisie dans le champs dédié n'existe pas, l'internaute voit alors un message d'erreur lui indiquant qu'il y a eu un problème avec l'envoi de son message.

Seul bémol, je reçois malgré tout une copie du message dans ma boite e-mail. L' adresse étant correcte d'un point de vue syntaxique, mon code ne prend pas en compte l'échec de l'envoi sur l'adresse principale.

J'illustre avec un exemple fictif mon propos :

$mail->setFrom('***@***', 'Master'); // Adresse de l'expéditeur
$mail->addAddress($_POST['expediteur']); // Destinataire principal (correspond à l'expéditeur du formulaire de contact)
$mail->addBCC('***@***'); // Adresse perso pour avoir une copie du formulaire soumis


Je reçois en effet le formulaire sur l'adresse addBCC, et ce même s'il y a eu un échec dans l'envoi à l'expéditeur du formulaire, soit le destinataire principal ci-dessus (adresse correcte d'un point de vue syntaxique mais n'existant pas).

Sauriez-vous comment éviter ce problème ?

D'ores et déjà merci pour votre précieuse aide.

Cordialement,

3 réponses

Messages postés
18316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2022
1 003
bonjour,
ne penses-tu pas qu'il faut travailler sur le code complet, incluant l'envoi du message d'erreur informant l'internaute qu'il y a eu un problème avec l'envoi de son message?
Bonjour,

Oui, comme précisé, l'internaute a un message lui indiquant que l'envoi de son message a rencontré un souci.
Le cas que j'essaie d'éviter est le suivant; l'internaute fait une faute de frappe (par exemple dans le nom de domaine) durant la saisie de son adresse e-mail (mais respecte le regex mis en place). La copie du message ne lui parviendra jamais, le serveur n'existant pas (faute de frappe), d'où le message d'erreur que l'internaute pourra lire (de son côté tout est clair, il y a eu un souci), mais moi je reçois quand même le formulaire (car mon regex accepte sa faute de frappe).

J'espère avoir mieux explicité mon problème.

Merci dans tous les cas pour le temps accordé.
Messages postés
34704
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022
4 001
Bonjour,


s'il y a eu un échec dans l'envoi à l'expéditeur du formulaire, soit le destinataire principal ci-dessus (adresse correcte d'un point de vue syntaxique mais n'existant pas).

Cette vérification ne peut pas être faite.
Si l'adresse mail respecte le bon "format", le script est incapable de savoir si le mail est réellement parti/arrivé au destinataire ou non... tant qu'il n'a pas été "envoyé".
C'est le serveur de mail du destinataire qui renvoie alors une éventuelle erreur si l'adresse n'existe pas

Tu ne peux vérifier que le "format" de l'adresse mail... ( en utilisant une regex avant de faire l'envoi du mail par exemple )

Bonjour,

Merci pour votre réactivité.

Oui, en effet, il semble logique que le script ne puisse pas le savoir avant que l'envoi n'ait été effectué. Et comme l'action est simultanée, j'ai respectivement un mail qui ne passe pas (le serveur de mail destinataire renvoie un message d'erreur) et la copie qui passe.

Autrement dit il faudrait que je ne m'envoie une copie du formulaire que si le serveur mail du destinataire n'a renvoyé aucune erreur. Après coup somme toute ?

Usine à gaz, ou facile à mettre en place? Je n'ai aucune expérience en php, et très très peu de connaissances.

Merci pour votre aide, c'est vraiment sympa.
Messages postés
34704
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022
4 001
Usine à gaz ....
Car pour savoir si le destinataire a bien reçu .. il faudrait aller parser la boite mail de l'émetteur et regarder si il y des mails de retour "non remis" ....
>
Messages postés
34704
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2022

Entendu. Merci beaucoup.

Je me permets encore une question (sans doute un peu naïve) : lorsque j'inscris une adresse fantaisiste (mais qui respecte le regex ou, dans mon cas, le FILTER_VALIDATE_EMAIL) et que la soumission échoue (sauf la copie bien sûr, qui elle passe toujours comme évoqué ci-dessus), à quoi est-ce dû ? Et puisqu'il y a un échec de l'envoi à cette adresse fantaisiste, ne puis-je pas récupérer cette information pour éviter de m'envoyer la copie?

L'erreur s'affichant étant :

SMTP Error: The following recipients failed: ***@***.**: <***@***.**>: Recipient address rejected: Domain not found

J'aurais peut-être dû le préciser plus tôt, j'utilise PHPMailer.
Messages postés
18316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2022
1 003 > Celio
tu n'as toujours pas montré le code affichant cette erreur.
>
Messages postés
18316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2022

Oui pardon, j'ai en fait copié l'exemple que l'on peut consulter sous A Simple Example :

https://github.com/PHPMailer/PHPMailer#a-simple-example
Messages postés
18316
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 janvier 2022
1 003 > Celio
ce que tu peux faire, alors, c'est, au lieu de t'ajouter en BCC au mail d'origine, c'est, dans le cas où le mail d'origine est bien parti (sans erreur), de t'envoyer un second mail.
de cette façon, tu ne recevras rien si le premier mail n'est pas parti.