Soumission de formulaire de contact avec adresse inexistante

Résolu/Fermé
Celio - Modifié le 21 déc. 2020 à 14:05
 Celio - 10 janv. 2021 à 09:07
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,
A voir également:

3 réponses

yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 Ambassadeur 1 557
21 déc. 2020 à 14:52
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?
0
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é.
0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719
21 déc. 2020 à 15:07
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 )

0
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.
0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719
21 déc. 2020 à 16:47
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" ....
0
Celio > jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024
Modifié le 21 déc. 2020 à 21:29
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.
0
yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 1 557 > Celio
21 déc. 2020 à 21:53
tu n'as toujours pas montré le code affichant cette erreur.
0
Celio > yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024
Modifié le 22 déc. 2020 à 16:55
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
0
yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 1 557 > Celio
22 déc. 2020 à 19:01
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.
0