Soumission de formulaire de contact avec adresse inexistante [Résolu]

Signaler
-
 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
13839
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
776
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
30941
Date d'inscription
mercredi 22 octobre 2003
Statut
Non membre
Dernière intervention
10 janvier 2021
3 165
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
13839
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
776 > 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.
>
Messages postés
13839
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

Bonjour,

Pardon pour mon retour tardif et merci pour votre suggestion.

Ca voudrait dire, toujours en reprenant le code mentionné ci-dessus, ajouter quelque chose après :

    $mail->send();
    echo 'Message has been sent';


Je pourrais lancer cela dans la foulée? :

$mail = new PHPMailer(true);


... et tout ce qui suit bien sûr ?

Bonne année à vous!
Messages postés
13839
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
776 > Celio
je pense qu'il suffit, après la ligne
echo
suivant l'envoi, d'ajouter
$mail->clearAddresses();
$mail->addBCC('***@***');
$mail->send();
Messages postés
13839
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021
776 >
Messages postés
13839
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

comme tu ne verras pas l'adresse du destinataire original ($_POST['expediteur']), il est possible, bien sûr de l'ajouter au texte et/ou au sujet du mail.
>
Messages postés
13839
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
11 janvier 2021

Bonjour yg_be,

C'est vraiment super! Merci beaucoup pour votre aide. C'est parfait!