Version 5 (modified by 19 years ago) ( diff ) | ,
---|
Wamailer 3.0
Qu’est-ce que Wamailer ? Une librairie composée de plusieurs classes écrites en PHP et permettant de générer et envoyer des emails.
Wamailer respecte du mieux possible les différentes RFC décrivant la syntaxe des emails.
Wamailer est distribué sous licence LGPL.
Pour l’envoi proprement dit, Wamailer offre plusieurs possibilités:
- Utilisation de la fonction mail() de PHP
- Ouverture d’un socket de connexion et dialogue avec un serveur SMTP
- Appel système à un MTA local (Sendmail, Postfix, …)
[À compléter/corriger]
La version 3.0 est une version complètement réécrite en PHP5.
« Pourquoi ? La version actuelle (2.x) semble bien fonctionner », me direz-vous. Certes, mais on ne peut pas nier que le code soit un peu vieillot. J’ai commencé à développer Wamailer en 2002 et la version courante, modulo quelques corrections au cours des ans et pour les besoins de Wanewsletter, date de 2003. Bref, tout cela méritait un bon nettoyage, et la tentation de tout refaire proprement était forte…
Je préfère vous laisser lire le code plutôt que de tenter de vous décrire de manière obscure et maladroite la façon dont j’ai souhaité architecturer l’ensemble.
Voici un exemple basique d’utilisation:
<?php require 'mailer.class.php'; $email = new Email(); $email->addRecipient("bobe <my@address.tld>"); $email->setSubject("Ici, le sujet"); $email->setTextBody("Ici, le message"); Mailer::send($email); ?>
Un autre exemple avec cette fois un message en HTML et un fichier joint:
<?php require 'mailer.class.php'; $message = "<p>Ici, le <strong>message en HTML</strong>!</p> <p>Une image :</p> <img src='http://example.org/path/to/image.png' alt='my text'> <p>Ciao!</p>"; $email = new Email(); $email->setFrom('one@example.org', 'Aurélien'); $email->addRecipient('my@address.tld', 'bobe'); $email->setSubject("Ici, le sujet"); $email->setHTMLBody($message); $email->attach('/path/to/file'); Mailer::send($email); ?>
Vous pouvez constater que la méthode addRecipient() peut s’utiliser de deux façons différentes, soit en passant une chaîne valide selon la RFC2822, soit en passant le nom de personnalisation en deuxième argument.
Enfin, voici un exemple d'envoi en boucle (utilisation typique d'envoi de newsletters):
<?php // $addressList contient un tableau d'adresses destinataires require 'mailer.class.php'; $message = "Ici, le message!"; $email = new Email(); $email->setFrom('one@example.org', 'Aurélien'); $email->setSubject("Ici, le sujet"); $email->setTextBody($message); foreach( $addressList as $address ) { $email->headers->remove('To'); $email->addRecipient($address); Mailer::send($email); } ?>
[D’autres exemples ou une page 'exemple' à venir]
Pour récupérer le code actuel en développement, indiquez la commande suivante à votre client svn favori:
svn checkout svn://dev.webnaute.net/wamailer/trunk
Si vous n’avez pas de client svn sous la main, ce n’est pas grave, des archives Tarball et Zip sont générées tous les jours à midi sur le serveur:
N’hésitez pas à tester tout cela et à me faire parvenir vos remarques!
Bobe
Liens
- Wamailer -- Présentation de Wamailer sur le site phpcodeur.net
- Browse source -- Accèder au code en développement de Wamailer 3.0