[RESOLU] Envoi de mail, erreur

Eléphant du PHP | 161 Messages

25 avr. 2017, 15:23

Bonjour à toutes et à tous,

J'essai désespérément d'envoyer un mail depuis mon portfolio (oui en local), avec mon formulaire de contact, et j'obtiens l'erreur suivante :

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in

Voici le code concerné :
<?php
if((isset($_POST['name']) && !empty($_POST['name'])) && (isset($_POST['fname']) && !empty($_POST['fname'])) && (isset($_POST['email']) && !empty($_POST['email'])) && isset($_POST['phone']) && isset($_POST['society']) && (isset($_POST['objet']) && !empty($_POST['objet'])) && (isset($_POST['message']) && !empty($_POST['message'])))
{
	$nom = $_POST['name'];
	$firstname = $_POST['fname'];
	$email = $_POST['email'];
	$phone = $_POST['phone'];
	$society = $_POST['society'];
	$objet = $_POST['objet'];
	$messageClient = $_POST['message'];
	$destinataire = "[email protected]";
	
	if(filter_var($email, FILTER_VALIDATE_EMAIL))
	{	
		$to      = $destinataire;
		$subject = $objet;
		$msg 	 = $messageClient;
		$headers = 'De: '.$nom.' '.$firstname. '\r\n' .
		   'Reply-To: '.$nom.' '.$firstname;
		if(mail($to,$subject,$msg,$headers))
		{
			echo 	"<div class=\"card card-success\">
					<div class=\"card-header\">
						<div class=\"header-block\">
							<p class=\"good title\">Email envoyé avec succès.</p>
						</div>
					</div>
				</div>";
		}
		else
		{
			echo 	"<div class=\"card card-warning\">
						<div class=\"card-header\">
							<div class=\"header-block\">
								<p class=\"title\"><i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i> Email non envoyé : erreur inconnue, veuillez réessayer.</p>
							</div>
						</div>
					</div>";
		}
	}
	else
	{
		echo 	"<div class=\"card card-warning\">
					<div class=\"card-header\">
						<div class=\"header-block\">
							<p class=\"title\"><i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i> Email non envoyé : veuillez saisir une adresse email avec un format adapté.</p>
						</div>
					</div>
				</div>";
	}
}
else 
{
	echo 	"<div class=\"card card-warning\">
				<div class=\"card-header\">
					<div class=\"header-block\">
						<p class=\"title\"><i class=\"fa fa-times-circle\" aria-hidden=\"true\"></i> Email non envoyé : certains champs obligatoires sont manquants.</p>
					</div>
				</div>
			</div>";
}
?>
C'est parce que je suis en local que ça ne fonctionne pas ?

J'ai également l'erreur : Email non envoyé : erreur inconnue, veuillez réessayer.

Quelqu'un peut-il m'aider s'il vous plaît ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

25 avr. 2017, 16:37

salut,

Le problème ne vient pas de ton code php mais de la configuration de php. Il te faut un serveur email de configuré pour utiliser la fonction mail.

tu peux par exemple utiliser mailcatcher

tu as un exemple de conf pour windows ici
http://epicadesign.fr/mailcatcher-envoy ... -en-local/
version unix : https://blog.netapsys.fr/mailcatcher-un ... veloppeur/

Mailcathcer va créer une serveur smtp sur ta machine et tu pourras vérifier la réception des email dans ton navigateur. L'avantage c'est que ça reste en local tu t'emmerde pas avec des serveurs externe et tu ne pollue pas de boite mail pour tester ton dev ;)

@+
Il en faut peu pour être heureux ......

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 avr. 2017, 16:52

Si tu es sous Windows, le + simple c'est d'ouvrir le fichier php.ini, trouver la ligne "sendmail_from" et indiquer le SMTP de ton fournisseur d'accès.
Voici leurs noms pour les 4 principaux FAI français :
smtp.free.fr
smtp.orange.fr
smtp.sfr.fr
smtp.bbox.fr
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 161 Messages

25 avr. 2017, 17:06

Ah donc il y'a moyen de tester la fonction mail en local ? :o
Je croyais cela impossible..
Merci à vous deux, je vais voir ce que je peux faire.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 avr. 2017, 21:03

Et il faut redémarrer Apache pour que tes modifs soient prises en compte
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 161 Messages

26 avr. 2017, 09:57

Ok merci je le saurais :)
Le problème est résolu, mon code fonctionnait bien en effet, mais c'était le soucis d'être en local. Étant donné que j'avais repris une ancienne version de mon portfolio, j'ai juste eu à le mettre en ligne pour que ça re-fonctionne correctement :)