Envoi Mail php - affichage dans le corps

houba_houbi -  
 vaeylon -
Bonjour,

Je sens que je vais poser une question très bête..... et je ne sais pas si je vais être claire......

Lorsque l'on envoit un formulaire par email en php, de type :
<?php
if(isset($_POST['envoyer']))
{
$to = "xxx";
$subject = "xxx";
$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];
$body = "From: $nom\n E-Mail: $email\n Message: $message\n";
echo "<h3 class='centre'>Le message a été envoyé ! Merci</h3>";
mail($to, $subject, $body);
}
?>

Les informations reçues dans Outlook sont affichées dans le corps du message. Ce qui fait :
----entete------
De : xxx
A : xxxx
Objet : xxxx
------corps---------
From : xxxxx
email : xxxx
message : xxxxxx

Je m'attendais plutôt à ce que "from" et "email" soit placé dans "De" en entete, puis "message" dans le corps ?
Est-ce normal ?

Merci d'avance
A voir également:

2 réponses

afrodje Messages postés 759 Date d'inscription   Statut Membre Dernière intervention   168
 
Je peux t'apporter une aide et non pas une modification.

Essai avec phpmaileur qui est très simple à mettre en place et facile à utiliser.
0
houba_houbi
 
Bonjour,

Merci pour ta réponse.

J'ai trouvé ce site : https://stephaneey.developpez.com/tutoriel/php/phpmailer/
Mais je ne comprends pas ce qu'apporte PHP Mailer ?
Je pensais que la fonction mail existait sur tout serveur en php ?
Je ne comprends pas pourquoi installer ?

De plus, c'est uniquement pour un formulaire de contact sur un site.
Je ne comprends ce que l'on veut dire par méthode SMTP ou mail ?

Merci d'avance,
0
vaeylon
 
La fonction mail existe bel et bien et fonctionne sur la plupart des serveurs (a priori il n'y a aucun problème avec le tien). Pour ce qui est de ton problème c'est en effet tout a fait normal, c'est même toi qui lui dit de procéder de la sorte.

Reprenons ton bout de code :
<?php
if(isset($_POST['envoyer']))
{
$to = "xxx";
$subject = "xxx";
$nom = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];
$body = "From: $nom\n E-Mail: $email\n Message: $message\n";
echo "<h3 class='centre'>Le message a été envoyé ! Merci</h3>";
mail($to, $subject, $body);
}
?> 


Sur ce passage :
$body = "From: $nom\n E-Mail: $email\n Message: $message\n";
Tu mets from et email dans le corps même de ton mail. Tout d'abord, il faut savoir que ta variable $email (contenant je suppose le mail de la personne qui t'envoi le mail via le formulaire) ne peut pas apparaitre en tant qu'émetteur de l'email (puisque l'émetteur c'est toi (enfin le site)). Je te conseille donc vivement de le laisser là où il est (ou du moins de le formater de manière a ce que le destinataire comprenne que l'email vienne de cette personne (du genre : "$nom ($email) t'as envoyé cet email : ". (je réutilise ta variable qui enregistre le nom du destinataire).

tu peux éventuellement enregistrer le from de la manière suivant en rajoutant des en-têtes à la fin de ta fonction mail (il s'agit du 4e paramètre de la fonction (et qui est facultatif).

$body=$message ;
$header="From: ". $email . "\r\n";
mail ($to,$subject,$body,$header);


J'espère t'avoir aidé ^^
0