Tom's Guide > Forum > Programmation > Envoi de mail en php !

Envoi de mail en php !

Forum Programmation : Envoi de mail en php !

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.
- 0 +

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.

Répondre à OmaR

Oui mais comment envoie t'il un message alors qu'il n'y a aucune donnée smtp?

Répondre à speatooh

et donc tout ça c'est le fichier .php... et a coté je dois insérer quoi en html?


Message édité par speatooh le 26-07-2008 à 13:27:11
Répondre à speatooh

le serveur smtp est déja installer sur l'hébergeur ou tu executera ce script ...

Répondre à okinou

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>&nbsp;
</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..


Message édité par speatooh le 26-07-2008 à 21:34:57
Répondre à speatooh

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 !
@+

------------------------------ Proce : Core 2 Duo E8400 / RAM : 3Go GSkill PC6400 / CM : Asus P5Q / Boitier : Antec Nine Hundred /
CG : ATI Radeon HD 4870 1go / Alim : Corsair VX 550W / HDD SaTa : WD 200Go, Samsung 320Go, Maxtor 200Go / OS : Windows XP SP2

 

Répondre à the stalker

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...

Répondre à speatooh

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"


Message édité par speatooh le 27-07-2008 à 15:40:06
Répondre à speatooh

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";

------------------------------ Proce : Core 2 Duo E8400 / RAM : 3Go GSkill PC6400 / CM : Asus P5Q / Boitier : Antec Nine Hundred /
CG : ATI Radeon HD 4870 1go / Alim : Corsair VX 550W / HDD SaTa : WD 200Go, Samsung 320Go, Maxtor 200Go / OS : Windows XP SP2

 

Répondre à the stalker

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 :

Code :
  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.

------------------------------ Proce : Core 2 Duo E8400 / RAM : 3Go GSkill PC6400 / CM : Asus P5Q / Boitier : Antec Nine Hundred /
CG : ATI Radeon HD 4870 1go / Alim : Corsair VX 550W / HDD SaTa : WD 200Go, Samsung 320Go, Maxtor 200Go / OS : Windows XP SP2

 

Répondre à the stalker

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 !


Message édité par speatooh le 11-08-2008 à 17:50:39
Répondre à speatooh

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 !





Code :
  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.     //Changement des valeurs de php.ini
  10.     ini_set('SMTP', 'smtp.adresse.fr');
  11.     ini_set('sendmail_from', 'toto@toto.fr');
  12.     if (mail($email, $titreMessage, $message, $expediteur))
  13.     { 
  14.         echo '<p>Votre mail a bien été envoyé</p>';
  15.   }
  16.   else
  17.   {
  18.          echo 'Erreur : echec lors de l\'envoi du mail ! veuillez vous ré-inscrire';
  19.   }
  20. ?>

------------------------------ Proce : Core 2 Duo E8400 / RAM : 3Go GSkill PC6400 / CM : Asus P5Q / Boitier : Antec Nine Hundred /
CG : ATI Radeon HD 4870 1go / Alim : Corsair VX 550W / HDD SaTa : WD 200Go, Samsung 320Go, Maxtor 200Go / OS : Windows XP SP2

 

Répondre à the stalker

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à..

Répondre à speatooh

Re,

Voilà le code qui fonctionne chez moi :

page HTML test.html :

Code :
  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 :

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



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.

@+

------------------------------ Proce : Core 2 Duo E8400 / RAM : 3Go GSkill PC6400 / CM : Asus P5Q / Boitier : Antec Nine Hundred /
CG : ATI Radeon HD 4870 1go / Alim : Corsair VX 550W / HDD SaTa : WD 200Go, Samsung 320Go, Maxtor 200Go / OS : Windows XP SP2

 

Répondre à the stalker

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?


Message édité par speatooh le 27-07-2008 à 21:07:06
Répondre à speatooh

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;

?>

------------------------------ Proce : Core 2 Duo E8400 / RAM : 3Go GSkill PC6400 / CM : Asus P5Q / Boitier : Antec Nine Hundred /
CG : ATI Radeon HD 4870 1go / Alim : Corsair VX 550W / HDD SaTa : WD 200Go, Samsung 320Go, Maxtor 200Go / OS : Windows XP SP2

 

Répondre à the stalker

Tout fonctionne, merci beaucoup !!!

Répondre à speatooh

Mais comment tu ferais pour séparer les deux morceaux de message par un espace ou un "/" ?


Message édité par speatooh le 28-07-2008 à 17:51:11
Répondre à speatooh
Tom's Guide > Forum > Programmation > Envoi de mail en php !
Aller à :

Il y a 981 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens