5573 sujets

Sémantique web et HTML

Bonjour,
décidément, le changement d'hébergeur a apporté quelque perturbations sur mon site. Mais je n'ai pas la preuve que c'est ce changement qui en est responsable.
Les messages que j'expédie sur le formulaire du site depuis chez moi n'arrivent pas sur la boîte mail désignée. Il partent bien, sans erreur, mais arrivent nulle part. J'ai tenté sur un mobile, c'est la même chose. Et la boîte mail fonctionne, indépendamment du formulaire.
Je parle bien d'un envoi en ligne, sur le site, pas en local.
Le nouvel hébergement fonctionne avec php 8.3. J'ai tenté de changer pour php 7.3 (les formulaires de mes autres sites sont sur php 7.1 et fonctionnent). Ça n'a rien changé.
Bonsoir, vous utilisez la fonction mail() de PHP? Si oui vérifier le retour de cette fonction qui devrait retourner true. En cas de retour false c'est que certainement la fonction mail() n,'est pas active sur ce nouvel hébergeur.
Sinon préciser la manière dont sont envoyé les mail par PHP.
Voici, dans mon php, ce qui expédie le contenu du formulaire.
Sur trois sites différents, ça a fonctionné jusqu'à présent. Ça ne fonctionne plus uniquement sur le site avec un nouvel hébergeur.
 $retour = mail('nom@domaine.fr', 'Envoi depuis le formulaire', 
$_POST['message'],
$_POST['mailpost'], '');
    if ($retour);       
    }
}

Je vais voir ça plus précisément demain.
Merci
Modérateur
Bonjour,

Le test pourrait-être réduit à :
	if(mail('nom@domaine.fr', 'Envoi depuis le formulaire', 
	$_POST['message'],
	$_POST['mailpost'], '')) {
		echo 'mail envoyé';
	}    
	else {
		echo 'Une erreur est survenue à l\'envoi du mail. ' .error_get_last()['message']; 
	}
}


Ensuite, si l'adresse mail d'envoi utilisée et celle du serveur/hébergement ne correspondent pas , il est possible que ce mail soit automatiquement rejeté par le service de messagerie du destinataire.

Si le serveur est mutualisé, c'est aussi compliqué, le serveur de messagerie peut-être déjà blacklisté à cause d'autres utilisateurs qui par le passé en ont fait un mauvais usage.

PHPMailer et une boite mail bien configurée (serveur de messagerie) peut éviter ce genre de mauvaises surprises et à montrer patte blanche. https://github.com/PHPMailer/PHPMailer

La fonction mail() , même si disponible, n'est pas fiable (peut aussi être bridée par l'hebergeur) et a la base il faut au moins utiliser une adresse mail correspondant au nom de domaine pour espérer voir les mails atteindre leurs destinations, au moins pire, on les retrouveras dans les spams.

Si ces mails te sont destinés, il peut aussi être judicieux d'en faire une copie sur le site . Par exemple en les reformatant dans un fill RSS privé.

Cdt

edit
Quel est ce nouveau hebergeur qui te fait des miséres Smiley smile ?

Peut-être as tu encore quelques petites choses à configurées comme https://www.cloudflare.com/fr-fr/learning/email-security/dmarc-dkim-spf/ par exemples Smiley cligne
Modifié par gcyrillus (19 Jan 2025 - 13:16)
Bonjour,
je n’avais donné que la partie d’expédition du formulaire, mais echo et else pour vérifier l’envoi du message sont bien présents dans mon code. Ils sont juste un peu plus haut sur la page. Echo retourne bien le message "Votre message a été transmis", texte que j’ai écrit moi-même. Mais ce message arrive nulle part, même pas dans les spams.
D’autre part, bien sûr que je suis sur le même domaine que l’hébergement. C’est une précaution indispensable.
Je vais les contacter, afin d’avoir des précisions et savoir s’ils n’ont pas bridé La fonction couriel.
J’attends leur réponse, dès lundi.
Ce nouvel hébergeur se nomme Eazy-Hebergement. J’étais d’ailleurs chez eux il y a deux ans. J’avais changé parce que leur mutualisé n’était pas en SSL. C’est maintenant chose faite. Je suis aussi mal tombé, ils l’avouent eux-même, ils sont sur une grosse mise à jour de leurs serveurs et nous demandent d’être patient sur les éventuels problèmes.
Peut-être que le problème vient de là.
Précision : L'hébergeur a son propre service de messagerie "Vous pouvez également consulter vos mails depuis l'interface suivante : https://webmail.easy-hebergement.net/mail-b"
Je l'ai consulté, les envois du formulaire ne sont pas là non plus.
Modifié par Bongota (19 Jan 2025 - 14:02)
Voilà l’'explication (le service d’aide travaille le dimanche?!)
------------
La fonction native phpmail utilisant des mails non authentifiés n’est plus active depuis mi-2022.
Elle servait surtout à des spammers faisant de l’usurpation d’identité...
Pour luter contre le spam et des activités de phishing, nous avons été contraints de désactiver cette fonction sur nos serveurs.
Afin d’envoyer des emails depuis vos scripts php, il est nécessaire de s’authentifier auprès d’un serveur SMTP avec un compte courriel valide (easy-hebergement par exemple).
L’utilisation de mails authentifiés nous permet d’améliorer le niveau global de sécurité lié à nos hébergements, de lutter contre le spam et le piratage.
Un exemple de mise en œuvre dans notre FAQ?:
https://www.easy-hebergement.fr/foire-aux-questions/envoyer-des-mails-authentifies
------------
Il me reste donc à mettre ça en place.
ps : Je viens de télécharger PHPMailer. Dans le code php, je vois ça :
$courriel->Host = "smtp.domaine.fr"; /OK
    $courriel->Port = 587; /OK
    $courriel->Username = "nom.nomdefamille@domaine.fr"; /OK
    $courriel->Password = "motdepasse4321"; /Mais ici ?

Quel est ce mot de passe qu'il faut donner ici ? Celui du mail ? Je n'avais jamais vu ça sur un script php.
Modifié par Bongota (19 Jan 2025 - 16:09)
Modérateur
Bonjour
a écrit :
Quel est ce mot de passe qu'il faut donner ici ? Celui du mail ? Je n'avais jamais vu ça sur un script php.

C'est effectivement ton mot de passe de messagerie. PHPMailer utilise ta messagerie et les infos à passer sont les mêmes que que celle que tu utiliserais avec un logiciel de messagerie pour configurer une boite mail. C'est ta messagerie qui envoi le mail, pas ton script qui lui ne transmet que les infos nécessaires.

cdt
Modifié par gcyrillus (20 Jan 2025 - 09:16)
Je me bats avec PHPMailer et j'ai cette erreur, lorsque je lance un message sur le formulaire
Parse error: syntax error, unexpected 'use' (T_USE) in /public_html/mail.php on line 85

Une partie du code. La ligne 85 concerne justement le "use".

//Importer les classes PHPMailer dans l'espace de noms global 
//Celles-ci doivent être en haut de votre script, pas à l'intérieur d'une fonction 
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require_once "vendor/autoload.php";
Modérateur
Bonsoir,

c'est probablement du à une typo précédent cette ligne. un point virgule manquant ou autre portion de code mal fermé/terminé. Tu devrais le percevoir dans ton éditeur .

cdt