Programmer's Reference Guide

Chapitre 29. Zend_Mail

29.1. Introduction

29.1.1. Pour commencer

Zend_Mail fournit des fonctionnalités génériques pour écrire et envoyer des emails au format texte et MIME. Un email peut-être envoyé avec Zend_Mail via le transporteur par défaut Zend_Mail_Transport_Sendmail ou via Zend_Mail_Transport_Smtp.

Exemple 29.1. Email simple avec Zend_Mail

Un email simple est composé d'un destinataire, d'un sujet, d'un message et d'un expéditeur. Pour envoyer ce genre de messages en utilisant Zend_Mail_Transport_Sendmail, vous pouvez faire comme ceci :


<?php
require_once 'Zend/Mail.php';
$mail = new Zend_Mail();
$mail->setBodyText('Ceci est le texte du message.');
$mail->setFrom('somebody@example.com''un expéditeur');
$mail->addTo('somebody_else@example.com''un destinataire');
$mail->setSubject('Sujet de test');
$mail->send();

[Note] Définitions minimales

Pour envoyer un email avec Zend_Mail, vous devez spécifier au moins un destinataire, un expéditeur (avec setFrom()), et un message (text et/ou HTML).

Pour la plupart des attributs de l'email, il y a des méthodes "get" pour lire les informations stockées dans l'objet mail. Pour plus de détails, merci de vous référer à la documentation de l'API. Une méthode spéciale est getRecipients(). Elle retourne un tableau avec toutes les adresses email des destinataires qui ont été ajoutés avant l'appel de cette méthode.

Pour des raisons de sécurité, Zend_Mail filtre tous les champs d'entête pour éviter tout problème d'injection d'entêtes avec des caractères de nouvelles lignes (\n).

Vous pouvez aussi utiliser la plupart des méthodes de l'objet Zend_Mail via une interface fluide. Une interface est dite fluide quand chaque méthode retourne la référence à l'objet appelé, ainsi vous pouvez appeler aussitôt une autre méthode.


<?php
require_once 'Zend/Mail.php';
$mail = new Zend_Mail();
$mail->setBodyText('Ceci est le texte du message.')
    ->
setFrom('somebody@example.com''un expéditeur')
    ->
addTo('somebody_else@example.com''un destinataire')
    ->
setSubject('Sujet de test')
    ->
send();

29.1.2. Configurer le transport sendmail par défaut

Le transporteur par défaut pour une instance Zend_Mail est Zend_Mail_Transport_Sendmail. C'est essentiellement un paquet pour la fonction PHP mail(). Si vous souhaitez fournir des paramètres additionnels à la foonction mail(), créez simplement une nouvelle instance du transporteur et fournissez vos paramètres au constructeur. La nouvelle instance du transporteur peut ainsi devenir le transporteur par défaut Zend_Mail, ou il peut être fourni à la méthode send() de Zend_Mail.

Exemple 29.2. Fournir des paramètres additionnels au transporteur Zend_Mail_Transport_Sendmail

Cet exemple montre comment changer le Return-Path de la fonction mail().


<?php
require_once 'Zend/Mail.php';
require_once 
'Zend/Mail/Transport/Sendmail.php';

$tr = new Zend_Mail_Transport_Sendmail('-freturn_to_me@example.com');
Zend_Mail::setDefaultTransport($tr);

$mail = new Zend_Mail();
$mail->setBodyText('Ceci est le texte du message.');
$mail->setFrom('somebody@example.com''un expéditeur');
$mail->addTo('somebody_else@example.com''un destinataire');
$mail->setSubject('TestSubject');
$mail->send();

[Note] Restrictions en mode Safe

Les paramètres additionnels optionnels peuvent entraînés un écec de la fonction mail() si PHP fonctionne en mode safe.