Page 1 sur 1

Envoi de mail, erreur

Posté : 25 avr. 2017, 15:23
par lucieemtl
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 ?

Re: Envoi de mail, erreur

Posté : 25 avr. 2017, 16:37
par moogli
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 ;)

@+

Re: Envoi de mail, erreur

Posté : 25 avr. 2017, 16:52
par @rthur
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

Re: Envoi de mail, erreur

Posté : 25 avr. 2017, 17:06
par lucieemtl
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.

Re: Envoi de mail, erreur

Posté : 25 avr. 2017, 21:03
par @rthur
Et il faut redémarrer Apache pour que tes modifs soient prises en compte

Re: Envoi de mail, erreur

Posté : 26 avr. 2017, 09:57
par lucieemtl
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 :)