Envoi de mail en php !
Forum Programmation : Envoi de mail en php !
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
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!
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.
Oui mais comment envoie t'il un message alors qu'il n'y a aucune donnée smtp?
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
le serveur smtp est déja installer sur l'hébergeur ou tu executera ce script ...
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..
Message édité par speatooh le 26-07-2008 à 21:34:57
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 !
@+
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...
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
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";
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 :
|
Ce que tu mets dans le POST c'est le même nom que tu as utilisé dans le formulaire.
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
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 :
|
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à..
Re,
Voilà le code qui fonctionne chez moi :
page HTML test.html :
Code :
|
page PHP send.php :
Code :
|
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.
@+
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
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;
?>
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 !!!
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
Il y a 981 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.
