Envoi de mail texte 1. Envoi de Mail
1. 1. Définition des champs
Pour envoyer des mails, il suffit d'utiliser la commande "mail" de PHP. mail (<adresse_destination>, <Object>, <Message> [,<Header>]);
1. 2. Exemple d'envoi d'un mail de base en PHP
<?php
$adresse = "nospam@mail.com"; $object = "Test d'envoi de mail"; $message = "Test afin de voir si l'envoi de mail fonctionne ou non !\n\n"; mail ($adresse, $object, $message); ?> 1. 3. Exemple d'envoi d'un mail plus complet en PHP
<?php $adresse = "nospam@mail.com"; $object = "Test d'envoi de mail"; $message = "Test afin de voir si l'envoi de mail fonctionne ou non !\n\n"; $headers = "From: Expediteur <nospam-sender@mail.com>\n"; $headers .= "X-Sender: <nospam-sender@mail.com>\n"; $headers .= "X-Mailer: PHP\n"; $headers .= "X-Priority: 1\n"; $headers .= "Return-Path: <nospam-sender@mail.com>\n"; $headers .= "Content-Type: text/html; charset=iso-8859-1\n"; $headers .= "cc:autre_adresse@mail.com\n"; $headers .= "bcc:autre_adresse_cachee@mail.com\n"; mail ($adresse, $object, $message,$headers); ?> Les formulaires en PHP et les formulaires HTML. 2. Envoi de mail avec pièces jointes
2. 1. Exemple
L'envoi de mail se fait en 2 parties bien distinctes : le formulaire d'envoi de mail et le script d'envoi de mail. Le formulaire doit contenir un champs de type "File", et surtout doit être déclaré en encodage : "enctype="multipart/form-data"". Nous allons supposer que le nom du champs "File" est "attach". Les formulaires en PHP et les formulaires HTML. Voici le formulaire HTML : <form method=POST action="mail.php" enctype="multipart/form-data"> Voici le script PHP associé au traitement :Adresse : <br><input name="adresse" size=40 value=""><br> CC : <br><input name="cc" size=40 value=""><br> BCC : <br><input name="bcc" size=40 value=""><br> Sujet : <br><input name="subject" size=40 value=""><br> Message : <br> <Textarea name="msg" cols=40 rows=10 WRAP=HARD> </TextArea><br> Fichiers : <br> <input type=file size=40 name="attach"><br><br> <center><input type=submit value="Envoyer"></center> <input type=hidden name="message" value=1> </form> <?php $headers = "From: Votre Nom <monnom@mondomaine.com>\n"; $headers .= "X-Sender: <monnom@mondomaine.com>\n"; $headers .= "X-Mailer: PHP\n"; $headers .= "X-Priority: 3\n"; $headers .= "Return-Path: <monnom@mondomaine.com>\n"; $headers .= "cc:".$cc."\n"; $headers .= "bcc:".$bcc."\n"; if (is_uploaded_file($attach)) { $file = fopen($attach, "r"); $contents = fread($file, $attach_size); $encoded_attach = chunk_split(base64_encode($contents)); fclose($file); $headers .= "MIME-version: 1.0\n"; $headers .= "Content-type: multipart/mixed; "; $headers .= "boundary=\"Message-Boundary\"\n"; $headers .= "Content-transfer-encoding: 7BIT\n"; $body_top = "--Message-Boundary\n"; $body_top .= "Content-type: text/plain; charset=US-ASCII\n"; $body_top .= "Content-transfer-encoding: 7BIT\n"; $body_top .= "Content-description: Mail message body\n\n"; $msg_cpl = $body_top.stripslashes($msg); $msg_cpl .= "\n\n--Message-Boundary\n"; $msg_cpl .= "Content-type: $attach_type; name=\"$attach_name\"\n"; $msg_cpl .= "Content-Transfer-Encoding: BASE64\n"; $msg_cpl .= "Content-disposition: attachment; filename=\"$attach_name\"\n\n"; $msg_cpl .= "$encoded_attach\n"; $msg_cpl .= "--Message-Boundary--\n"; } if (mail ("$adresse","".stripslashes($subject)."","$msg_cpl",$headers)) { echo ("<center><font color=green>Mail envoyé</font></center>"); } ?> 2. 2. Explications
La partie sur les "headers" a déjà été traitée dans la première partie, je n'en reparlerais pas ici. la ligne "if (is_uploaded_file($attach))" permet de vérifier si le fichier à bien été envoyé en paramètre (d'autres tests peuvent être fait afin de vérifier si l'utilisateur à voulu envoyer un fichier ou non !). Les 4 lignes suivantes permettent de lire le contenu du fichier et de le mettre dans une variable "$encoded_attach" codée avec une base64. Ceci n'est pas forcement essentiel pour cette partie, donc, si vous ne comprenez pas à quoi cela correspond, j'en parlerais peut-être plus tard. Les 4 lignes suivantes ajoutent au header les informations concernant l'envoi de pièce attachées (à copier telles quelles !). La variable "$body_top" fixe le corps du mail, avec les variables reprises dans ce qui a été écrit dans le formulaire. Ensuite, on ajoute le fichier attaché dans le corps du mail. La dernière vérification permet de s'assurer que le mail a bien été envoyé. |