8722 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Depuis des années, sur mon site Internet la page contact fonctionne parfaitement :
l'utilisateur remplit 3 ou 4 champs classiques, valide un reCAPTCHA v2 puis le mail
atterrit dans mon Gmail... Ça c'était avant !

Depuis quelques jours des utilisateurs se sont plaint que nous ne répondions pas à leur
mail envoyés depuis le site alors que nous en recevions encore qq uns par ce biais...

Après quelques tests, j'ai constaté qu'avec Firefox, il n'y avait aucun problème, les mails
arrivaient bien par contre avec Chrome depuis mon Linux ou depuis mon smartphone
Android, j'étais systématiquement dirigé vers un message d'erreur que j'avais écris il
y a plusieurs année pour avertir l'utilisateur que son mail n'avait pas été traité !

(J'ai essayé aujourd'hui reCAPTCHA v3 mais j'ai le même problème...)

J'ai l'impression que mon problème vient de traitement de l'entête par CHROME,
car quand je vire $entete ou que je neutralise $entete .= 'From:'.$nom.' <'.$destinataire.'>' . "\r\n" . du traitement de l'envoi, le problème disparaît !

Voici mon code :


<?php
session_start();

/*//affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
*/

//récupération PROPRE des variables AVANT de les utiliser
$nom = !empty($_POST['nom']) ? $_POST['nom']: NULL;
$prenom = !empty($_POST['prenom']) ? $_POST['prenom']: NULL;
$email = !empty($_POST['email']) ? trim($_POST['email']): NULL;
$telephone = !empty($_POST['telephone']) ? $_POST['telephone']: NULL;
$text = !empty($_POST['text']) ? $_POST['text']: NULL;

$_SESSION['nom'] = htmlspecialchars($nom);
$_SESSION['prenom'] = htmlspecialchars($prenom);
$_SESSION['email'] = htmlspecialchars($email);
$_SESSION['telephone'] = htmlspecialchars($telephone);
$_SESSION['text'] = htmlspecialchars($text);

// Ma clé privée
$secret = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
// Paramètre renvoyé par le recaptcha
$response = $_POST['g-recaptcha-response'];

$api_url = "https://www.google.com/recaptcha/api/siteverify?secret="
. $secret
. "&response=" . $response
. "&remoteip=" . $remoteip;

$decode = json_decode(file_get_contents($api_url), true);
if ($decode['success'] == true) { // LE CAPTCHA EST BON => C'est un humain
    $destinataire = "mon_adresse_perso@gmail.com";
    $sujet = "Formulaire de contact site Internet";
    $contenu = "\nNom : $nom \nPrenom : $prenom \nTéléphone : $telephone \nE-mail : $email \nMessage : $text";
    
    $entete= 'MIME-Version: 1.0' . "\r\n";
    //$entete .= 'From:'.$nom.' <'.$destinataire.'>' . "\r\n" .   // <-----ICI ÇA PLANTE !!!
    $entete .= 'Reply-To:'.$email. "\r\n" .
    'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
    'Content-Disposition: inline'. "\r\n" .
    'Content-Transfer-Encoding: 7bit'." \r\n" .
    'X-Mailer:PHP/'.phpversion();
    
    if(mail($destinataire, $sujet, $contenu, $entete)){
      $ligne1 = "Votre message a bien été envoyé, nous vous répondrons dans les meilleurs délais.";
      $ligne2 = "Vous allez être redirigé vers l'accueil, veuillez patienter...";
      $h1 = "Envoi du message !";      
    }else{        
        $ligne1 = "SUITE A UN PROBLÈME TECHNIQUE MOMENTANÉ NOUS N'AVONS PAS ÉTÉ EN MESURE DE 
        RECEVOIR VOTRE MESSAGE." . '<br>' . "NOUS SOMMES DÉSOLÉS POUR CE DÉSAGRÉMENT"; 
        $ligne2 = "MERCI D'UTILISER VOTRE LOGICIEL DE MESSAGERIE HABITUEL ET CETTE ADRESSE :" . '<br>' . 
        '<b style="color:blue;"><a href="mailto:mon_adresse_perso@gmail.com">mon_adresse_perso@gmail.com</a></b><br>';
        $h1 = "ERREUR";
    }
    header('Refresh: 5; URL= index.php');
    session_destroy();
} 



Merci d'avance pour votre aide !
Modifié par etienne69 (21 Jun 2022 - 16:25)