22.Archives

22.5.Envoyer un e-mail avec Zend Framework 1

22.5.1.Introduction

Dans le tutoriel sur l'envoi de mail[où?] nous avons pu constater que le principe est très simple (il suffit d'utiliser la fonction mail()) mais la mise en oeuvre peut être rendue complexe (notamment lorsqu'il s'agit de joindre des fichiers) car elle implique de connaître la norme décrivant la structure d'un mail. Afin de s'affranchir de cette difficulté, il vaut mieux faire appel à une bibliothèque telle que Zend Framework.
Pour commencer vous devrez installer[comment?] Zend Framework 1.
rem
  • En fait, pour ce chapitre, vous devez au moins avoir les fichiers Mail.php, Mime.php, Exception.php et les répertoires Mail/, Mime/.
warning Que ce soit avec Zend Framework ou simplement la fonction mail(), le "problème" est le même: pour pouvoir envoyer un mail, vous devez au préalable configurer votre environnement PHP comme précisé dans le chapitre précédent.

22.5.2.La classe Mail()

Pour envoyer un mail, il suffit alors de s'appuyer sur la classe Mail. Dont le constructeur ne prend qu'un unique paramètre optionnel permettant de préciser le type d'encodage à utiliser (ex: ISO-8859-1, UTF-8, etc.).
Cette classe offre notamment les méthodes suivantes:
  • setFrom($email) permettant de préciser l'adresse email de l'expéditeur.
  • addTo($email) permettant d'ajouter un destinataire (son adresse email).
  • addCc($email) permettant d'ajouter un destinataire (son adresse email) en copie.
  • addBcc($email) permettant d'ajouter un destinataire (son adresse email) en copie cachée.
  • setSubject($titre) permettant de préciser l'objet du mail.
  • send() permettant d'envoyer le mail.
Pour envoyer un simple mail au format texte, il faut préciser le contenu du mail avec la méthode setBodyText(), comme suit:
<?php
require_once("include_path_inc.php");
require_once("Zend/Mail.php");

$mail = new Zend_Mail();
$mail->setFrom('webmaster@phpfacile.com');
$mail->addTo('__adresse_du_destinataire__');
$mail->setSubject('Mail de test');
$mail->setBodyText('Mail contenant simplement du texte');
$mail->send();
?>
warning Pensez à renseigner l'adresse de destination avant de faire un test.
Le fichier Zend/Mail.php devrait pouvoir être retrouvé par PHP en adaptant éventuellement à votre installation le code suivant
<?php 
// Adaptez les chemins de recherche a votre environnement
set_include_path(get_include_path().PATH_SEPARATOR.
                 // Si la bibliotheque Zend est au meme niveau que ce fichier
                 dirname(__FILE__).PATH_SEPARATOR.
                 dirname(__FILE__)."/ZendFramework".PATH_SEPARATOR.
                 // Si la biblotheque Zend Framework est a la racine du site
                 $_SERVER["DOCUMENT_ROOT"].PATH_SEPARATOR.
                 $_SERVER["DOCUMENT_ROOT"]."/ZendFramework".PATH_SEPARATOR.
                 // Si la biblotheque Zend Framework est au niveau superieur
                 $_SERVER["DOCUMENT_ROOT"]."/../.".PATH_SEPARATOR.
                 $_SERVER["DOCUMENT_ROOT"]."/../ZendFramework/.".PATH_SEPARATOR
                 );
                 ?>