Votre question

Envoi de mail en php !

Tags :
  • Html
  • Programmation
Dernière réponse : dans Programmation
26 Juillet 2008 01:56:49

Bonjour,

Quelqu'un pourrait esseyer de m'expliquer comment envoyer un mail avec php ?
J'ai esseyé plusieurs tutoriaux mais étant novice en la matière j'ai rien compris :D 

Je sais qu'il fait faire un fichier php avec ça..

<?php
//-----------------------------------------------
//DECLARE LES VARIABLES
//-----------------------------------------------

$destinataire='mail_destinataire@fai.fr';
$email_expediteur='votre_mail@fai.fr';
$email_reply='email_de_reponse@fai.fr';

$message_texte='Bonjour,'."\n\n".'Voici un message au format texte';
$message_html='<html>
<head>
<title>Titre</title>
</head>
<body>Test de message</body>
</html>';

//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//-----------------------------------------------

$frontiere = '-----=' . md5(uniqid(mt_rand()));

//-----------------------------------------------
//HEADERS DU MAIL
//-----------------------------------------------

$headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
$headers .= 'Return-Path: <'.$email_reply.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"';

//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$message = 'This is a multi-part message in MIME format.'."\n\n";

$message .= '--'.$frontiere.'--'."\n";
$message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_texte."\n\n";

//-----------------------------------------------
//MESSAGE HTML
//-----------------------------------------------
$message .= '--'.$frontiere.'--'."\n";
$message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$message .= $message_html."\n\n";

$message .= '--'.$frontiere.'--'."\n";

if(mail($destinataire,$sujet,$message,$headers))
{
echo 'Le mail a été envoyé';
}
else
{
echo 'Le mail n\'a pu être envoyé';
}
?>

Mais à part ça..

Merci!

Autres pages sur : envoi mail php

a c 232 L Programmation
26 Juillet 2008 09:06:31

Salut,

Tu remplaces les trois variables par celles que tu veux :
$destinataire='mail_destinataire@fai.fr';
$email_expediteur='votre_mail@fai.fr';
$email_reply='email_de_reponse@fai.fr';

Tu enregistres le tout dans un fichier php, que tu lances sur un serveur qui sait interpréter le PHP.
26 Juillet 2008 13:26:11

Oui mais comment envoie t'il un message alors qu'il n'y a aucune donnée smtp?
Contenus similaires
26 Juillet 2008 13:26:12

et donc tout ça c'est le fichier .php... et a coté je dois insérer quoi en html?
26 Juillet 2008 14:02:00

le serveur smtp est déja installer sur l'hébergeur ou tu executera ce script ...
26 Juillet 2008 20:58:17

Ah ok :) 
et alors tu y mettrais quoi dans le document html?

du genre..

<Form name="Contact" action="SendContact.php" method="POST">
<Table border=0 cellspacing=0 cellpadding=0 class="Texte">
<Tr>
<Td>Sujet du message:<Br>
<input name="Sujet" size=54></Td>
</Tr>
<Tr>
<Td>Votre message ou question:<Br>
<Textarea name="Message" cols=56 rows=5></Textarea></Td>
</Tr>
<Tr>
<Td>Votre adresse e-mail:<Br>
<input name="EMail" size=54></Td>
</Tr>
<Tr>
<Td>Vos nom et prénom:<Br>
<input name="Nom" size=54></Td>
</Tr>
<Tr>
<Td>Votre numéro de téléphone:<Br>
<input name="Telephone" size=54></Td>
</Tr>
<Tr>
<Td height=15> 
</Td>
</Tr>
<Tr>
<Td align=center><Input type="submit" value="ENVOYER" style="text-align:center;">
</Tr>
</Table>
</Form>

Avec ça je reçois un message mais sans rien..
27 Juillet 2008 12:50:54

Salut,
Ce qui va être affiché dans le message va être contenu dans les variables "$message_texte" et "$message_html". T'a juste à les modifier pour faire afficher ce que tu veux. Si tu reçois rien c'est normal, je pense que t'as pas du modifier la valeur de la variable $message_html par exemple ou qu'il y a une erreur dans le code. Il suffit de mettre le code que tu veux dedans pour que ta boîte mail l'affiche.
Mais là faudra vérifier mais je crois que certaines boîtes aux lettres n'aiment pas trop les mail contenant de l'html. En tout cas, commence par changer la valeur de ces variables. Elles sont déclarées en haut de page, le reste c'est du traitement pour envoyer le mail si je ne m'abuse ;) 
Bon courage !
@+
27 Juillet 2008 14:43:42

j'ai esseyé avec $message_texte.. j'ai esseyé d'écrire de plusieures façons

<Td>Votre message ou question:<br />
<textarea name="$message_texte" cols=56 rows=5></textarea>

Mais toujours rien...
27 Juillet 2008 15:37:54

j'ai un .php plus simple maintenant..

<?php
$headers ='From: "nom"<...>'."\n";
$headers .='Reply-To: '...'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

if(mail('mail', 'sujet', 'sessage', $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
?>

mais comment faire la relation entre 'mail', 'sujet' et 'message' avec les textarea du .html...?
Car je reçois un message intitulé "nom", avec comme sujet "sujet" et comme message "message"
27 Juillet 2008 15:54:08

Oui c'est ce que tu dois modifier.
Ligne1 : 'From: "nom" <...>
A la place de nom tu mets ce que tu veux..
A un endroit tu dois avoir la déclaration des variables "sujet" et "message". Il suffit de mettre ce que tu veux dedans pour que ça s'affiche dans ton message.
Par exemple : $message = "bonjour, bienvenue sur mon site";
$sujet = "inscription";
27 Juillet 2008 15:57:38

A oui et pour les textarea du html, tu dois les récupérer dans la page PHP. Pour ça tu dois faire quelque chose comme :
  1. $message = $_POST['Message"];
  2. $mail = $_POST['EMail'];
  3. ...


Ce que tu mets dans le POST c'est le même nom que tu as utilisé dans le formulaire.
27 Juillet 2008 18:18:42

De cette manière ?

<?php
$headers ='From: "nom"<>'."\n";
$headers .='Reply-To: '."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

$message = $_POST['Message'];
$mail = $_POST['mail'];
$sujet = $_POST['sujet'];


if(mail('', 'sujet', 'Message', $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Le message n\'a pu être envoyé';
}
?>

Parce que ça ne change absolument rien...
Pourtant le noms correspondent !
27 Juillet 2008 18:30:24

Re,
Je crois que l'erreur vient du fait que tu envoies les mots 'Message' et 'sujet' au lieu d'envoyer les variables. En remplaçant 'sujet' et 'Message' par $sujet et $message ça devrait fonctionner.
Sinon, essaie de t'inspirer de ce code. Il devrait te mettre sur la bonne voie, sinon donne moi tout ton code et je regarde de plus près.
Bon courage !





  1. <?php
  2. //Déclaration des variables
  3. //Attention de bien mettre les mêmes noms de champs que dans ta page html où se trouve ton formulaire
  4. $email = $_POST['mail'];
  5. $message = $_POST['message'];
  6. $titreMessage = $_POST['sujet'];
  7. $expediteur = 'From: "nomQueTuVeux" <me@localhost.com>'."\n";
  8. $expediteur .= "Content-type: text/html; charset= iso-8859-1\n";
  9.  
  10. //Changement des valeurs de php.ini
  11. ini_set('SMTP', 'smtp.adresse.fr');
  12. ini_set('sendmail_from', 'toto@toto.fr');
  13.  
  14. if (mail($email, $titreMessage, $message, $expediteur))
  15. {
  16. echo '<p>Votre mail a bien été envoyé</p>';
  17. }
  18. else
  19. {
  20. echo 'Erreur : echec lors de l\'envoi du mail ! veuillez vous ré-inscrire';
  21. }
  22.  
  23. ?>
27 Juillet 2008 18:51:24

En tout cas merci de m'aider ^^

Voilà, m'en sortant vraiment pas je vai te donner le tout..

ça c'est du coté html:

<Form name="mail" action="send.php" method="POST">
<Table border=0 cellspacing=0 cellpadding=0 class="Texte">
<Tr>
<Td height="83"><div align="center"><span class="Style20">Sujet:

</span><Br>
<input name="titreMessage" size=54 />
</div></Td>
</Tr>
<Tr>
<Td><div align="center"><span class="Style22">Votre message:</span><br />
<textarea name="message" cols=56 rows=5></textarea>
<Br>
</div></Td>
</Tr>
<Tr>
<Td><div align="center"><span class="Style22">Votre mail:</span><Br>
<input name="email" size=54>
</div></Td>
</Tr>
<Tr> </Tr>
<Tr>
<Td align=center><br /><Input type="submit" value="ENVOYER" style="text-align:center;"> </Tr>
</Table>
</Form>

et ça du coté php..

<?php
$email = $_POST['mail'];
$titreMessage = $_POST['sujet'];
$message = $_POST['Message'];
$headers ='From: "nom"<moi@fai.fr>'."\n";
$headers .='Reply-To: moi@fai.fr'."\n";
$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';

if(mail($email, $titreMessage, $message, $headers))
{
echo 'Le message a bien été envoyé';
}
else
{
echo 'Echec';
}
?>

Voilà..
27 Juillet 2008 19:19:46

Re,

Voilà le code qui fonctionne chez moi :

page HTML test.html :
  1. <html>
  2. <body>
  3. <form method="post" action="send.php">
  4. <label for="mail">Mail : <input type="text" name="mail" id="mail" /></label>
  5. <label for="sujet">Sujet : <input type="text" name="sujet" id="sujet" /></label>
  6. <label for="message">Message <input type="textarea" name="message" id="message" /></label>
  7. <input type="submit" name="connexion" value="Envoyer" />
  8. </form>
  9. </Form>
  10. </body>
  11. </html>


page PHP send.php :
  1. <?php
  2.  
  3. $email = $_POST['mail'];
  4. $sujet = $_POST['sujet'];
  5. //Ici j'ai enlevé la majuscule pour éviter les erreurs
  6. $message = $_POST['message'];
  7. $headers ='From: "nom"<moi@fai.fr>'."\n";
  8. $headers .='Reply-To: moi@fai.fr'."\n";
  9. $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
  10. $headers .='Content-Transfer-Encoding: 8bit';
  11.  
  12. //Là tu changes le SMTP, tu mets le tiens, celui de ton FAI par exemple
  13. ini_set('SMTP', 'smtp.orange.fr');
  14. ini_set('sendmail_from', 'toto@toto.fr');
  15. if(mail($email, $sujet, $message, $headers))
  16. {
  17. echo 'Le message a bien été envoyé';
  18. }
  19. else
  20. {
  21. echo 'Echec';
  22. }
  23.  
  24. ?>


Le mail s'envoie bien par contre il file dans la boîte de courriers indésirables. Ça doit venir de ma boîte hotmail, après il ira dans la boîte de réception. T'as plus qu'à modifier le SMTP et à refaire la décoration de ta page HTML et ça sera nickel.

@+
27 Juillet 2008 19:38:01

Niquel !
mais comment on fait si on veut qu'il y ai de l'html au lieu de 'le massage a été envoyé' ?

Et si on veut faire un autre textarea dont le contenu irait rejoindre le message?
27 Juillet 2008 22:00:57

Il suffit de placer de l'html à la place du message. Si c'est cette partie que tu veux modifier, tu places ton code html dans le echo (ligne 17 dans mon code).
Pour ajouter deux textarea, tu commences par en créer un autre dans la page html. Tu l'appelle $message2 par exemple.
Voilà à quoi pourrait ressembler le code :

<?php
//Tu récupères tes deux variables de ton formulaire
$message = $_POST['message'];
$message2 = $_POST['message2'];

//Ensuite on fait une concaténation pour assembler les deux bouts et normalement ça marche
$messageEntier = $message.$message2;

?>
27 Juillet 2008 22:34:28

Tout fonctionne, merci beaucoup !!!
28 Juillet 2008 17:50:44

Mais comment tu ferais pour séparer les deux morceaux de message par un espace ou un "/" ?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS