FAQFAQ
RechercherRechercher
Liste des MembresListe des Membres 
Groupes d'utilisateursGroupes d'utilisateurs
ProfilProfil 
S'enregistrerS'enregistrer 
 
  Prestations
Compétences
Engagements
Réferences
Contact
  Voyages
Baudelet.net
Vidéosurveillance
Trains de luxe
Croisiere
  Analyse HTML
Annuaire gratuit
Outils Google
Demande de devis
  Liens
livres
Magazines
Logiciels
 
ConnexionConnexion
Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés 
Messagerie en PHP

 
Poster un nouveau sujet   Répondre au sujet    SoftiForum Index du Forum -> PHP, Mysql
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
tsiry



Inscrit le: 12 Déc 2006
Messages: 5

MessagePosté le: Ven Mar 02, 2007 4:26 pm    Sujet du message: Messagerie en PHP Répondre en citant

La fonction mail() en PHP :

En PHP, il y a une fonction très simple pour envoyer un e-mail. Sa syntaxe est :
<?php
mail("adresse email destinataire","sujet","corps du message","options");
?>
Le dernier champ est facultatif, il contient les en-têtes.
Mais ce que nous allons voir c'est l'envoi d'un e-mail avec une pièce jointe.
Il est possible d'envoyer un e-mail avec une pièce jointe en PHP. Nous allons donc utiliser une classe d'objet pour envoyer nos e-mails. Cette classe va se charger de formater notre message au format MIME, en attachant optionnellement un ou plusieurs fichiers. Une fois le message formaté, elle se chargera de l'envoyer, en utilisant la fonction mail(). Voici un exemple très simple pour montrer la syntaxe à mettre en oeuvre pour utiliser cette classe.

Structure de la fonction mail() :
Ici, le fichier joint est supposé placé dans le même répertoire que le script.
<?php
// On fait appel à la classe
include("mime_mail.class.php");

// On commence par mettre dans une variable le fichier à attacher.
$fichier = @fread(fopen("logo.jpg", "r"), filesize("logo.jpg"));

// On créé une instance de cette classe
$mail = new mime_mail();
// Définition des destinataires.
$email = "toto@toto.fr";
$mail->to = $email;
// Titre du message
$mail->subject = "E-mail avec un fichier attaché";
// Définition du corps du message
$corps = "Bonjour monsieur,\n Ci-joint le logo de phpteam.net";
$mail->body = $corps;
// Définition de l'e-mail de l'expediteur ( paramètre optionnel )
$mail->from = "tata@tata.fr";
// Défintion des entêtes supplementaires ( paramètres optionnels )
$entetedate = date("D, j M Y H:i:s -0700");
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n";
$entetemail .= "Date: ";
$mail->headers = "$entetemail";
// Définition du fichier attache ( paramètre optionnel )
$mail->attach("$fichier", "logo.jpg");
// On envoi le message
$mail->send();
?>
Mais dans le cas où le fichier joint sera uploadé via le formulaire d'envoi d'email, la structure de notre fonction mail sera comme suit :
<?php
// On fait appel à la classe
include("mime_mail.class.php");
// Upload du fichier a envoyer sur le serveur *
$tmp_file = $_FILES['files']['tmp_name'];
$file_name = $_FILES['files']['name'];
$file_type = $_FILES['files']['type'];
$file_size = $_FILES['files']['size'];
$length = strlen($file_name);
$chemin = "upload_file/";
move_uploaded_file($tmp_file, $chemin.$file_name);
$filename = $chemin.$file_name;
// On créé une instance de cette classe
$mail = new mime_mail();
// Définition des destinataires.
$email = "toto@toto.fr";
$mail->to = $email;
// Titre du message
$mail->subject = "E-mail avec un fichier attaché";
// Définition du corps du message
$corps = "Bonjour monsieur,\n Ci-joint le logo de phpteam.net";
$mail->body = $corps;
// Définition de l'e-mail de l'expediteur ( paramètre optionnel )
$mail->from = "tata@tata.fr";
// Défintion des entêtes supplementaires ( paramètres optionnels )
$entetedate = date("D, j M Y H:i:s -0700");
$entetemail .= "X-Mailer: PHP/" . phpversion() . "\n";
$entetemail .= "Date: ";
$mail->headers = "$entetemail";
// Définition du fichier attache ( paramètre optionnel )
$tmp = fread(fopen($filename, "rb"), $file_size);
$tmp2 = explode("/",$file_name);
$tmp2 = $tmp2[sizeof($file_name)-1];
$mail->attach($tmp, $tmp2); // fichier attache (optionnel)
// On envoi le message
$mail->send();
?>
Et voici ce que contienne le ficiher mime_mail.class.php
<?php
class mime_mail
{
var $parts;
var $to;
var $from;
var $headers;
var $subject;
var $body;
// constructeur
function mime_mail()
{
$this->parts = array();
$this->to = "";
$this->from = "";
$this->subject = "";
$this->body = "";
$this->headers = "";
}
// attache un fichier au message
function attach($message,$name,$ctype = '')
{
// type de contenu non defini
if(empty($ctype))
{
// on essaie de reconnaitre l'extension
switch(strrchr(basename($name), "."))
{
case ".gz": $ctype = "application/x-gzip"; break;
case ".tgz": $ctype = "application/x-gzip"; break;
case ".zip": $ctype = "application/zip"; break;
case ".pdf": $ctype = "application/pdf"; break;
case ".png": $ctype = "image/png"; break;
case ".gif": $ctype = "image/gif"; break;
case ".jpg": $ctype = "image/jpeg"; break;
case ".txt": $ctype = "text/plain"; break;
case ".htm": $ctype = "text/html"; break;
case ".html": $ctype = "text/html"; break;
default: $ctype = "application/octet-stream"; break;
}
}
$this->parts[] =
array (
"ctype" => $ctype,
"message" => $message,
"encode" => $encode,
"name" => $name
);
// fin de fonction
}
// fonction utilisee pour contruire le message MIME
// utilisee depuis build_multipart()
function build_message($part)
{
$message = $part[ "message"];
$message = chunk_split(base64_encode($message));
$encoding = "base64";
return "Content-Type: ".$part[ "ctype"].
($part[ "name"]? "; name = \"".$part[ "name"]. "\"" : "").
"\nContent-Transfer-Encoding: $encoding\n\n$message\n";
}
// compose le message MIME
// utilisee depuis send()
function build_multipart()
{
$boundary = "b".md5(uniqid(time()));
$multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
for($i = sizeof($this->parts) - 1; $i >= 0; $i--){
$multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
}
return $multipart.= "--\n";
}
// envoie le message
// derniere fonction a appeler
function send()
{
$mime = "";
// parametres optionnels
if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
if (!empty($this->headers)) $mime .= $this->headers. "\n";
if (!empty($this->body)) $this->attach($this->body, "", "text/html; charset=\"iso-8859-1\"");
// entete MIME
$mime .= "MIME-Version: 1.0\n".$this->build_multipart();
// envoi du message
mail($this->to, $this->subject, "", $mime);
}
}; // fin de la classe
?>
Vous pouvez maintenant créer votre propre formulaire d'envoi d'e-mail .
Je vous rappelle que dans le script, tous les fichiers doivent être dans le même répertoire. Vous pourrez modifier ça en les mettant dans les includes. Very Happy
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
dd-bug
Medaille 1
Medaille 1


Inscrit le: 09 Juin 2006
Messages: 15
Localisation: a gauche en entrant

MessagePosté le: Sam Juin 09, 2007 6:24 am    Sujet du message: Répondre en citant

merci pour cette sympathique class .. juste une question peux ton definir le champ encoding en tant qu'encrypted ??

dd-mesages
_________________
Vous avez le cerf-volant ... prenez de l'air !!
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    SoftiForum Index du Forum -> PHP, Mysql Toutes les heures sont au format GMT + 9,5 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum