Envoyer un mail en php

Fermé
Xella60 Messages postés 65 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 25 février 2011 - 3 juin 2010 à 13:58
Xella60 Messages postés 65 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 25 février 2011 - 4 juin 2010 à 07:32
Bonjour,

J'ai déjà lus plusieurs sujet à ce propos mais je n'arrive toujours pas au bon résultat et je désespère.

J'ai une page de réservation pour un restaurant qui contient un formulaire, je voudrais que celui-ci soit envoyer par e-mail grâce à la fonction php et non pas par mailto.

J'ai déjà essayé à l'aide d'exemple trouver mais rien n'y fait je n'arrive pas à retourner de valeur, ni a envoyé de mail d'ailleurs.

Le formulaire contenu dans ma page réservation.html retourne action="mail.php" et c'est dans ma page mail.php que j'ai écrite la fonction.

Je voudrais utilisé le php pour l'envoi de l'e-mail car la présentation avec la méthode mailto c'est pas le top.

Voila le lien de la page: http://www.2pieces-cuisine.fr/reservation.htm



A voir également:

11 réponses

Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
3 juin 2010 à 14:12
je te conseil de jeter un coup d oeil du coté de PHPMailer, je m'y replonge aussi et te donne des nouvelles
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
Modifié par Gremy87 le 3/06/2010 à 14:22
alors télécharge la classe PHPMailer sur le net (ca doit se trouver assez facilement)

ensuite dans le action de ton formulaire tu amène sur une page PHP ou tu trouvera ca:

include_once('mailer/class.phpmailer.php'); 
 $mail = new PHPMailer(); // creation d'une nouvelle instance de PHPMailer 
  
 $ad_dest=//adresse du destinataire 
  
 $mail->AddAddress($ad_dest, ''); // ajout adresse destinataire et nom correspondant 
  
  
 $mail->IsSMTP(); // telling the class to use SMTP 
 $mail->SMTPAuth = true;  // enable SMTP authentication 
 $mail->SMTPSecure = "ssl"; // sets the prefix to the servier 
  
 $mail->Host = "smtp.gmail.com"; // Spécifie l'hôte SMTP. (sets GMAIL as the SMTP SERVER) 
 $mail->Port = 465;  // set the SMTP port for the GMAIL server 
  
 $mail->Username = ""; // GMAIL username 
 $mail->Password = ""; // GMAIL password 
  
 //$mail->SetFrom('noreply@          ', '', 1); 
  
 $mail->AddReplyTo("noreply@            ",""); // définit l'adresse de retour en cas d'échec et nom correspondant 
  
 $mail->Subject = ""; // sujet du mail

$message = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
   <html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
     <title></title> 
    </head> 
    <body > 

</body> 
</html>'; 

$mail->MsgHTML($message); 
 $mail->IsHTML(true); // Spécifie que le corps du mail est du HTML 

if( !$mail->Send() ) // envoi 
 { 
   echo  "Echec de l'envoi du mail, Erreur n°: " .$mail->ErrorInfo;  
 } 
 else 
 { 
   echo 'Mail envoyé avec succès !'; 
 } 
 $mail->SmtpClose(); 
 unset($mail); 



voila le contenu du mail sera en HTML donc la présentation c est toi qui la gère.

je te poste une adresse pour la classe PHPMailer si j en trouve une vite fait ^^
RISE OF THE GEEK IS COMMING SOON!!! BWAHAHAHAHA
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
3 juin 2010 à 14:30
https://sourceforge.net/projects/phpmailer/files/

voila en adaptant un peu le tout ca devrais aller
0
Xella60 Messages postés 65 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 25 février 2011 3
3 juin 2010 à 14:34
ok merci de tes conseils je vais essayer tout sa et je vous dis si j'ai encore un soucis.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Xella60 Messages postés 65 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 25 février 2011 3
3 juin 2010 à 14:52
je ne comprend pas le code, comment puis-je récupérer dans mon e-mail les valeurs de mon formulaire ?
0
xMiLeY Messages postés 68 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 15 juin 2010 7
3 juin 2010 à 15:01
ben dans $message tu rajoute des $_POST['nomduchampduformulaire'] aux endroits que tu veux :)
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
3 juin 2010 à 15:08
bon effectivement le code n est pas super simple a comprendre.

ton formulaire va envoyer des valeurs en POST.

toi tu vas les récupérer et les mettre dans le corps de ton message.

par exemple:

$message = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<body >
<h2>Demande de réservation de monsieur'.$_POST['nom'].' '.$_POST['prenom'].'</h2>

<p>Voici les coordonnées de cette personne :</p>

<p>nom: '.$_POST['nom'].'</p>
<p>prenom: '.$_POST['prenom'].'</p>
<p>adresse: '.$_POST['adresse'].'</p>
<p>code postal: '.$_POST['codepostal'].'</p>
<p>ville: '.$_POST['ville'].'</p>
<p>telephone: '.$_POST['telephone'].'</p>
<p>fax: '.$_POST['fax'].'</p>
<p>mobile:'.$_POST['mobile'].'</p>
<p>email: '.$_POST['email'].'</p>

<p>les informations de la reservation:</p>

<p>nombre de personnes: '.$_POST['nombre personnes'].'</p>
<p>date: '.$_POST['jour'].'/'.$_POST['mois'].'/'.$_POST['annee'].'</p>
<p>midi? '.isset($_POST['midi']).'</p>
<p>soir?'.isset($_POST['soir']).'</p>
</body>
</html>';

$mail->MsgHTML($message);


voila un exemple de mail que tu pourrais t envoyer.

dans le code de mon premier post tu as des choses a remplir.
j utilise le serveur smtp de gmail, il faut donc que tu ai un compte gmail et que tu rentre tes pseudo et mot de passe. il faut aussi l adresse de destination
0
Xella60 Messages postés 65 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 25 février 2011 3
3 juin 2010 à 15:18
J'ai fait le message comme tu me l'as conseillé, lorsque j'essai d'envoyer un message, cela m'affiche la page que j'appelle dans mon form action.

De plus je ne reçois même pas les valeurs de mon formulaire, voila ce que cela m'affiche lorsque je clique sur envoyer:

AddAddress($ad_dest, ''); // ajout adresse destinataire et nom correspondant

$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // Spécifie l'hôte SMTP. (sets GMAIL as the SMTP SERVER)
$mail->Port = 465; // set the SMTP port for the GMAIL server //
$mail->Username = ""; // GMAIL username //
$mail->Password = ""; // GMAIL password //
$mail->SetFrom('noreply@ ', '', 1); //
$mail->AddReplyTo("noreply@ ",""); // définit l'adresse de retour en cas d'échec et nom correspondant
$mail->Subject = "Reservation"; // sujet du mail

$message = ' Nom : $_POST['$nom'] Prénom : $_POST['$prenom'] N° et Adresse : $_POST['adresse'] Code postal : $_POST['codepostale'] Ville : $_POST['ville'] Tél: $_POST['telephone'] Fax :$_POST['fax'] Mobile : $_POST['mobile'] Email : $_POST['email'] Je souhaite réserver une table pour $_POST['personnes'] Date : $_POST['jour'] : $_POST['mois'] : $_POST['annee'] Je souhaite le(s) repa(s): $_POST['midi'] $_POST['soir'] '; $mail->MsgHTML($message);

$mail->IsHTML(true); // Spécifie que le corps du mail est du HTML

if( !$mail->Send() ) // envoi
{ echo "Echec de l'envoi du mail, Erreur n°: " .$mail->ErrorInfo; }
else { echo 'Mail envoyé avec succès !'; }
$mail->SmtpClose();
unset($mail); ?>

j'ai du mal a comprendre les $mail au départ, merci de votre aide.
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
3 juin 2010 à 15:31
ça t'AFFICHE ça? c 'est pas censé t'afficher du PHP, t as un serveur web?

bon sinon dans le code que tu viens de poster il te manque le debut:

include_once('mailer/class.phpmailer.php');
$mail = new PHPMailer(); // creation d'une nouvelle instance de PHPMailer

$ad_dest=//adresse du destinataire

$mail->AddAddress($ad_dest, ''); // ajout adresse destinataire et nom correspondant

bon ensuite je t'explique:

la variable $mail est une instance de PHPMailer

on appel ensuite plusieurs méthodes de la classe PHPMailer pour affecter des variables pour pouvoir envoyer l email.

on dit qu'on va utiliser le protocole SMTP:
$mail->IsSMTP(); // telling the class to use SMTP

on active l authentification du protocole SMTP:
$mail->SMTPAuth = true; // enable SMTP authentication

on definit le type de sécurité:
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier

on spécifie le nom du serveur SMTP, la c est celui de GMAIL et le port qui sera utilisé:
$mail->Host = "smtp.gmail.com"; // Spécifie l'hôte SMTP. (sets GMAIL as the SMTP SERVER)
$mail->Port = 465; // set the SMTP port for the GMAIL server //

la il faut que tu rentre ton nom d utilisateur GMAIL parce qu il faut un compte valide pour envoyer les mails
$mail->Username = ""; // GMAIL username //

ton mot de passe GMAIL
$mail->Password = ""; // GMAIL password //

le "from" du mail pour dire de qui vient le mail
$mail->SetFrom('noreply@ ', '', 1); //

l adresse de retour si echec
$mail->AddReplyTo("noreply@ ",""); // définit l'adresse de retour en cas d'échec et nom correspondant

le sujet du mail:
$mail->Subject = "Reservation"; // sujet du mail

et ensuite vient le corps du mail qui sera du code HTML


cette ligne dit que le message est en HTML
$mail->IsHTML(true); // Spécifie que le corps du mail est du HTML


et la fonction d envoi:
if( !$mail->Send() ) // envoi
{ echo "Echec de l'envoi du mail, Erreur n°: " .$mail->ErrorInfo; }
else { echo 'Mail envoyé avec succès !'; }
$mail->SmtpClose();
unset($mail); ?>
0
Xella60 Messages postés 65 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 25 février 2011 3
Modifié par Xella60 le 3/06/2010 à 15:43
Voila mon code de départ

include_once('mailer/class.phpmailer.php');
$mail = new PHPMailer(); // creation d'une nouvelle instance de PHPMailer

$ad_dest=debby_60@hotmail.fr//adresse du destinataire

$mail->AddAddress($ad_dest, ''); // ajout adresse destinataire et nom correspondant


$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier

$mail->Host = "smtp.gmail.com"; // Spécifie l'hôte SMTP. (sets GMAIL as the SMTP SERVER)
$mail->Port = 465; // set the SMTP port for the GMAIL server

$mail->Username = "XXXXXX"; // GMAIL username
$mail->Password = "XXXXX"; // GMAIL password

$mail->SetFrom('noreply@ ', '', 1);

$mail->AddReplyTo("noreply@ ",""); // définit l'adresse de retour en cas d'échec et nom correspondant

$mail->Subject = "Reservation"; // sujet du mail


J'ai bien un serveur web mais la je testais en local c'est peut-être sa le problème!
0
Gremy87 Messages postés 352 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 mars 2014 38
3 juin 2010 à 15:40
bon je vais faire quelques test en local aussi et je te dis si ca vient de la ^^
0
Xella60 Messages postés 65 Date d'inscription jeudi 3 juin 2010 Statut Membre Dernière intervention 25 février 2011 3
4 juin 2010 à 07:32
Je n'ai toujours pas réussi, si quelqu'un a une solution je suis prenante!
0