 |
| | | | | | | | | 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>]);
<adresse_destination> : adresse e-mail du destinataire du mail
<Object> : titre du mail
<Message> : contenu du mail
<Header> : header du mail, c'est à dire toute les "options" d'envoi du mail
Le header est une chaîne de caractère contenant de nombreux champs :
- From : Adresse de l'expéditeur (format : Nom <adresse_mail>)
- X-Sender : Adresse réelle de l'expéditeur
- X-Mailer : Logiciel utilisé pour l'envoi des mails
- X-Priority : Priorité accordée au mail (valeur allant de 1 pour Urgent à 3 pour normal)
- Return-Path : Adresse utilisée pour la réponse au mail
- Content-Type : Contenu du mail (texte, html...)
- cc : Carbon Copy, c'est à dire adresse en copie du mail, visible par tout le monde
- bcc : Blind Carbon Copy, idem que "cc", mais invisible !
| | | | | | | | | 1. 2. Exemple d'envoi d'un mail de base en 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
|  |  |  |
|
<?
$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);
?>
Si vous voulez avoir plus d'informations sur les formulaires :
Les formulaires en PHP et les formulaires HTML.
| | | | | | | | | 2. Envoi de mail avec pièces jointes
|  |  |  |
|
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".
Si vous voulez avoir plus d'informations sur les formulaires :
Les formulaires en PHP et les formulaires HTML.
Voici le formulaire HTML :
<form method=POST action="mail.php" enctype="multipart/form-data">
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>
Voici le script PHP associé au traitement :
<?
$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>");
}
?>
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é.
|