Accueil > INFORMATIQUE > Systèmes de publication web > SPIP > Alerte Email pour TrackBack et SPIP

Alerte Email pour TrackBack et SPIP

jeudi 15 septembre 2005, par thierrybo

Comment être prévenu par Email quand un de vos articles SPIP a été pisté.

Çà y est j’ai enfin quelque chose qui marche semble t’ il correctement !

Comme je l’ écrivais dans l’article TrackBack sous SPIP, l’intégration de « MovableType Standalone » à SPIP est une solution légère, au sens où il n’y a aucun fichier php3 ajouté ou modifié. Mais en contrepartie la « gestion » des RétroLiens est très succincte. Elle se limite, à partir de la page de chaque article, à la suppression individuelle des RétroLiens. Il n’est pas question ici d’obtenir une gestion complète avec modération des RétroLiens reçus, mais il serait quand même intéressant de pouvoir être prévenu lorsqu’un des articles a été pisté.
Je viens d’y parvenir, à tâtons, Perl n’étant vraiment pas ma tasse de thé. C’est un premier jet, sans soute perfectible mais qui fonctionne correctement. J’ai utilisé Mail ::Mailer tout simplement parce que je ne suis pas parvenu a utiliser Sendmail directement :-(

Pré-requis :

  • Avoir installé TrackBack Standalone dans l’article cité plus haut
  • Avoir le module Perl Mail ::Mailer installé

- Au début du fichier tb.cgi, ajoutez :

- Vers la ligne 38, après la ligne :

respond_exit("No URL (url)") unless $i->{url};

insérez les lignes

- Après la dernière routine sub from_file (après l’ accolade fermante), ajoutez :

  1. sub envoi_mail {
  2. my($i) = @_;
  3. my $mail = Mail::Mailer->new('sendmail')
  4. or die "La création de l'objet Mail::Mailer a échoué !\n";
  5.  
  6. my $mail_headers = {
  7. 'Content-Type' => 'text/plain',
  8. To => [ 'votre@email.fr' ],
  9. From => 'votre@email.fr',
  10. Subject => "Un de vos articles vient d'être pisté",
  11. };
  12.  
  13. $mail->open( $mail_headers );
  14.  
  15. $mail->print("Titre : $i->{title}\n",
  16. "Extrait : $i->{excerpt}\n",
  17. "URL : $i->{url}\n",
  18. "Nom du blog : $i->{blog_name}");
  19.  
  20. $mail->close();
  21. }

De cette façon, vous recevrez un Émail à chaque fois qu’un de vos articles sera pisté, avec le contenu suivant par exemple :

Sujet : Un de vos articles vient d’être pisté

Titre : Look Ma, No LANs !
Extrait : How To Play Multiplayer Games Over The Internet With Kali by Loyd Case
URL : http://www.thierryb.net/site/Look-Ma-No-LANs.html
Nom du blog : Journal Web de Thierry Bothorel, INFORMATIQUE et WARGAMES

Si Mail ::Mailer n’est pas disponible, vous pouvez utiliser cette variante utilisant Net ::SMTP :

- Remplacez
use Mail::Mailer qw(sendmail);
par :
use Net::SMTP;

- Et toute la procédure « envoi_mail() » par :

  1. sub envoi_mail {
  2. my($i) = @_;
  3. # connection au serveur SMTP
  4. my $smtp = Net::SMTP->new('smtp.server.name')
  5. or die "La création de l'objet Mail::Mailer a échoué !\n";
  6. $smtp->mail( 'votre@email.fr' ); # email de l'expéditeur
  7. $smtp->to('votre@email.fr'); # email du destinataire
  8. $smtp->data(); # Début du mail
  9.  
  10. # Envoi des entêtes.
  11. $smtp->datasend("To: votre\@email.fr\n");
  12. $smtp->datasend("From: votre\@email.fr\n");
  13. $smtp->datasend("Subject: Un de vos articles vient d'être pisté\n");
  14. $smtp->datasend("\n");
  15.  
  16. # Envoi du corps.
  17. $smtp->datasend("Titre : $i->{title}\n");
  18. $smtp->datasend("Extrait : $i->{excerpt}\n");
  19. $smtp->datasend("URL : $i->{url}\n");
  20. $smtp->datasend("Nom du blog : $i->{blog_name}\n");
  21. $smtp->dataend(); # Termine l'envoi du mail
  22. $smtp->quit; # Ferme la connection SMTP
  23. }

Ci-joint le nouveau fichier complet. Toute suggestion pour amélioration est la bienvenue !

titre documents joints

  • TrackBack avec envoi d' émails TrackBack avec envoi d’ émails (Zip – 6.2 ko)

Répondre à cet article | RétroLiens :0


Répondre à cet article