5568 sujets

Sémantique web et HTML

Bonjour,

Je possède deux sites sur lesquels on peut me contacter via un formulaire d'envoi de mail qui est en PHP.
Ce script fonctionnait TRES BIEN avec tous mes anciens hébergeurs mutualisés (OVH, Hostinger, PingFiles, ...).
Dernièrement, je suis passé chez ByetHost (mutualisé également), et susprise, ce script confirme bien que le mail est envoyé, mais en réalité, aucun mail n'est envoyé/reçu, quel que soit les boites mails testé (expéditeur et destinataire, boite local de l'hébergeur ou externe).

De plus, mon hébergeur est sous PHP 7.3.6, une version récente donc.
Je vous joint mon code, avez vous une idée ?
Merci bien Smiley smile

<?PHP
	if(!$_POST) {
		exit;
	}

	//CONFIGURATION DE L'EMAIL DU DESTINATAIRE
	$to = 'contact3@psg70.fr';

	$nom = $_POST['nom'];
	$prenom = $_POST['prenom'];
	$email = $_POST['email'];
	$message = $_POST['message'];
		
	if(!isset($nom) || empty($nom)) {
		$erreur[] = 'nom';
	}
	if(!isset($prenom) || empty($prenom)) {
		$erreur[] = 'prenom';
	}
	$syntaxe_email = '#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,6}$#';
	if(!preg_match($syntaxe_email, $email)) {
		$erreur[] = 'email';
	}
	if(!isset($message) || empty($message)) {
		$erreur[] = 'message';
	}

	if (isset($erreur) && !empty($erreur)) {
		$tab['erreur'] = $erreur;
	} 
	else {

		$headers = "From: $to" . "\r\n";
		$headers .= "Reply-To: $email" . "\r\n";
		$headers .= "MIME-Version: 1.0" . "\r\n";
		$headers .= "Content-type: text/html; charset=utf-8" . "\r\n";
		$headers .= "Content-Transfer-Encoding: quoted-printable" . "\r\n";

		$sujet = 'Psg70 - Contacts';

		$le_message = '<html>';
			$le_message .= '<head></head>';
			$le_message .= '<body>';
				$le_message .= '
					Madame / Monsieur :<br />
					'.$prenom.' '.$nom.'<br /><br />

					Coordonnées :<br />
					'.$email.'<br />

					Message :<br />
					'.$message.'<br /><br />

					--<br />
					Cet email a été envoyé via votre site internet  www.psg70.fr  .
				';
			$le_message .= '</body>';
		$le_message .= '</html>';

		if (mail($to, $sujet, $le_message, $headers)) {
			$tab['message'] = 'Merci. <br /> Votre message a bien été envoyé. <br /> Votre demande sera traitée dans les plus brefs délais.';
		}

	}
	echo json_encode($tab);

?>
Modérateur
Salut,

Tu as écrit au support de ton hébergement ? Si "non" il faudrait peut être commencer par la.... ils sauront mieux te guider que nous je pense.
Sinon il me semble qu'il y a une fonction en plus de php a activer sur certain hébergeurs pour pouvoir envoyer des mails....
Bonjour,

Merci pour votre réponse.
Je les ai également contacté, j'attends leur réponse, mais si cela venait du code ou de quelques spécificité, je doute qu'ils prennent le temps de corriger mon code.
C'est pourquoi je me tourne également sur un forum de spécialiste, et plus particulièrement des fonctions et particularité de PHP Smiley smile
Modérateur
Et l'eau,
petites pistes :

As tu regardé dans les logs ?

/var/log/


de mémoire :
- mail.log
- syslog

Ensuite, essaie d'afficher les messages erreurs de php. Je vois que tu déclares une ou plusieurs clefs alors que tu n'as pas déclaré la variables au préalables : $tab

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


Au passage, ton header n'est pas suffisant. Il manque des informations comme le boundary et le mail textuel entres autres....

<<<EDIT
Si tu fais un else dans cette condition, est ce que tu obtiens quelque chose? D'ailleurs, ta façon de faire n'est pas bonne. Tu devrais lever une exception au cas où....

if (mail($to, $sujet, $le_message, $headers)) {

EDIT;
Modifié par niuxe (30 Jul 2019 - 04:57)
Bonjour à tous,

Je reviens vers vous pour vous tenir informé de ce qu'il en ai.
J'ai eu la réponse de mon hébergeur en disant en gros, qu'en fait il gérait les emails ... mais seulement partiellement Smiley ohwell .... mouais mouais.
Et me conseillais de passer sur la version premium, qui ne me convenait pas.

Je suis donc parti à la pêche d'un ènième hébergeur pour la solution idéale (peut-être Hebergratuit ) .
Je vous remercie pour vos réponses en tout cas.
Cordialement,
Thomas.