[chantier] Faut pas pusher (installer des articles par email)

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

comment publier rapidement sur son site, juste en envoyant un email.

Cette contribution a donné naissance au plugin PubEmail. Cette doc n’est là que pour devoir de mémoire et de respects aux grands ancêtres.

Le but de ce script est de permettre la proposition d’article sans se connecter a l’interface privée, mais simplement en envoyant un mail.

Il faudra faire une liste des hebergeurs ou cela fonctionne :
-  ONLINE : cela ne fonctionne pas

Mise en place

-  Intaller le script dans le répertoire ecrire/
-  Editer les parametres qui se trouvent au debut du script :

// Parametrage Email 
$serverPop="";
$user="";
$password="";
$port=110;

Utilisation

Puis envoyer un email à l’adresse email qui est paramétrée ci dessus.
Dans le titre il faut mettre l’expression SPIPOUNET
Puis le corps du message sera du genre :

#titre:Faut pas pusher en espagnol
#rubrique:test
#mot-cle:6,9
#lang:es
#texte: {{{Titre}}}la la
la
sdlkfmlskdfmksdf
kdfmlskdf
<code>sdffsdfsdfsdfsdsdfsdf
</code>
<cadre>sdfsdfsdf

Ensuite allez sur la page du script pour lancer la recuperation des mails et consultez le fichier SPIP.LOG .

Dernière modification de cette page le 26 mars 2009

Discussion

15 discussions

  • 1

    Bonjour Tout le monde (& ben)

    a priori la contrib « faut pas pusher » que j’avais utilisée il y a longtemps, a été « désactivée » après tentative de pasage en plugin.

    es-ce récupérable ?

    Comment faire pour l’éxécuter dans le cron de spip ?

    merci

    MJ

    Répondre à ce message

  • Bonjour

    l’idée me plaît bien. Merci. Je serais vraiment heureux de voir débarquer un plugin...

    IDP

    Répondre à ce message

  • 3

    bonjour,

    Très bonne idée, mais je n’arrive pas à le faire fonctionner ; j’obtiens le message d’erreur suivant

    Fatal error : Call to undefined function : imap_open() in /var/www/free.fr/1/8/kcauzeville/ecrire/push.php3 on line 247

    Faut-il définir la fonction imap_open() quelque part ?

    Merci par avance pour vos réponses.

    • Gilles Corlobé

      Apparement, ce message d’erreur apparait lorsque PHP n’a pas été compilé avec les fonctions imap. Dans le cas de Free, il n’y a donc rien de surprenant.

      J’ai téléchargé la version Windows de PHP et j’ai le même problème. Je vais donc rechercher s’il y un moyen de contourner le problème avec une autre instruction....

    • Gilles Corlobé

      En fait, le problème ne se trouve pas au niveau de la compilation, mais du fichier de configuration php.ini. Vous me direz (et vous aurez raison) que cela ne change pas grand chose pour Free.

      Lorsque vous avez accès au php.ini (hébergement local) :
      -  Pour Windows, il faut décommenter la ligne : extension=php_imap.dll .
      -  Pour Linux, il faut installer le rpm php-imap (« urpmi php-imap »).

    • Comme l’ont dit les autres, le module IMAP n’existe pas chez Free.

      Théoriquement il serait possible d’utiliser un module IMAP pur PHP tel que celui d’IlohaMail utilisé par RoundCube WebMail (-> source).

      Malheureusement, d’après mon expérience récente (hier), Free semble bloquer toutes les connexions à des serveurs IMAP depuis les pages perso, y compris imap.free.fr. Donc c’est insoluble.

    Répondre à ce message

  • 2

    Autre bug avec la recherche de rubrique par titre : J’indique #rubrique Revue de presse, mais le GREP du script choisit la rubrique intitulé Revue de presse (1995-2002), c’est à dire les archives, au lieu de choisir celle dont le nom correspond exactement.

    Répondre à ce message

  • Bonjour,
    Tout cela fonctionne parfaitement jusqu’à l’affichage des messages récupérés. Par contre dans mon Admin, je ne vois toujours pas d’articles proposés...

    Quel est le problème selon vous ?

    merci

    Répondre à ce message

  • J’ai les problèmes suivants en utilisant le script :
    -  problème avec l’encodage de certains mails
    -  le script n’efface pas les mails déjà traités
    -  le script ne semble pas traiter plus d’un seul mail à la fois

    Répondre à ce message

  • J’envoie un article à push.php3 depuis Apple Mail 2.0 mais je me retrouve avec des gros problèmes d’encodage dans l’article une fois dans l’espace privé. Pourtant il s’agit d’un simple copier-coller.

    = ?WINDOWS-1252 ?Q ?_#titre:Un_Palestinien_atteint_du_sida_est ?= = ?WINDOWS-125

    Répondre à ce message

  • J’ai testé ce script, c’est vraiment formidable.

    Quelques commentaires :
    -  Actuellement, il faut écrire le titre d’une rubrique en toutes lettres, ce serait plus rapide de pouvoir préciser #rubrique:3 pour la rubrique n° 3. #id_rubrique serait plus consistent avec les balises SPIP
    -  Par contre pour les mots-clés, ce serait pratique de les mettre en toutes lettres (#mot-cle : spip-contrib), car si tous mes articles envoyés par mail vont dans une seule rubrique, j’ai des centaines de mots-clés disponibles...
    -  Ce serait bien de pouvoir préciser le #TITRE de l’article dans le sujet du message
    -  Encore mieux serait la possibilité d’envoyer plusieurs articles dans un seul mail, il manque juste une balise pour séparer les articles (même si en fait #titre pourrait faire l’affaire)

    L’intérêt serait de pouvoir préparer un mail avec une revue de presse, en rajoutant quelques balises et hop ! les articles sont en ligne, au lieu de le faire article-par-article avec x recharge des pages...

    Répondre à ce message

  • 7

    très bonne idée...
    j’ai du installer l’option ssl pour que ça marche (chez l’hébergeur haisoft.fr)

    j’ai ajouté les balises surtitre et soutitre en copiant la balise titre.

    Mais ca fonctionne irrégulièrement et visiblement s’il y a plus d’un message, il n’y a plus de texte ?
    Et certains textes sont coupés (peut-être ceux dont le mail contenait des images, même si je les supprime ?

    merci de me dire si ca marche même avec plusieurs gros messages ?

    je ne connais pas vraiment le php, mais y-a-t-il un moyen de « nettoyer » le mail des caractères parasites, des images et autres logos ?

    bon, je sais, je pourrai l’envoyer en texte brut.. Mais je voudrais bien au contraire garder le html...

    pam

    • première étape de résolution.

      En fait, c’est l’expression régulière dans la recherche du texte qui pose problème si le texte contient un #, ce qui est fréquent si le texte est de l’HTML avec des couleurs codées genre #FFFF00...

      j’ai commencé à regarder la doc des expressions régulière... je débute donc ce n’est pas facile..

      si je comprends bien, dans la ligne
      if (preg_match(« /(#texte :)([^#]*)/ », $messageBody,$res))

      l’expression utilisée cherche le mot « #texte » (c’est le but de la première parenthèse (#texte :), mais en s’arrêtant au prochain # (c’est le but de la deuxième ([^#]*), le ^ voulant dire exclusion, et l’étoile répétition... ????

      donc, j’ai tenté...
      if (preg_match(« /(#texte :) », $messageBody,$res))

      mais j’ai l’impression alors que le résultat n’est pas dans $res[2].... sauf que je n’arrive pas à comprendre la structure du tableau résultat...

      merci de toute aide...

      pam

    • Salut.

      Essaye
      if (preg_match("/(#texte:)(.*)$/", $messageBody,$res))
      qui devrait récupérer tout ce qui suit « #texte » dans le message.

      Nat

    • merci, mais ca ne ramène rien... ?
      j’avoue que ces expressions régulières sont quand même un truc de spécialiste.... il faudrait se faire un utilitaire de test

      J’ai finalement utilisé
      if (preg_match(« /(Texte :)([^¤]*)/i », $messageBody,$res))

      sachant qu’il y a peu de chances pour avoir le car ¤ dans un texte !

      mais c’est pas très élégant...
      pam

    • Il faut ajouter l’option qui indique que « . » (n’importe quel caractère sauf fin de ligne par défaut) doit aussi « marcher » pour les fins de ligne (option « s ») :

      <?php
      
      $messageBody = "#titre:Faut pas pusher en espagnol
      #rubrique:test
      #mot-cle:6,9
      #lang:es
      #texte: {{{Titre}}}la la
      la
      sdlkfmlskdfmksdf
      kdfmlskdf
      <code>sdffsdfsdfsdfsdsdfsdf
      </code>
      <cadre>sdfsdfsdf";
      
      if (preg_match("/(#texte: *)(.*)$/is", $messageBody,$res)) {
      	echo "0 = $res[0]\n";
      	echo "1 = $res[1]\n";
      	echo "2 = $res[2]\n";
      }
      
      ?>

      Résultat :

      0 = #texte: {{{Titre}}}la la
      la
      sdlkfmlskdfmksdf
      kdfmlskdf
      <code>sdffsdfsdfsdfsdsdfsdf
      </code>
      <cadre>sdfsdfsdf
      1 = #texte: 
      2 = {{{Titre}}}la la
      la
      sdlkfmlskdfmksdf
      kdfmlskdf
      <code>sdffsdfsdfsdfsdsdfsdf
      </code>
      <cadre>sdfsdfsdf
    • Une petite amélioration :

      <?php
      
          $messageBody = "#titre:Faut pas pusher en espagnol
      #rubrique:test
      #mot-cle:6,9
      #lang:es
      #texte: {{{Titre}}}la la
      la
      sdlkfmlskdfmksdf
      #kdf: mlskdf
      <code>sdffsdfsd#fsdfsdsdfsdf
      </code>
      <cadre>sdfsdfsdf";
      
      // Ajout d'une ligne blanche en debut de chaine pour simplifier la boucle:
      $rest = "
      $messageBody";
      
      $i = 0;
      
      do {
          if (preg_match("/\n#([^#:\n]*): *([^#]*)(\n#.*)$/is", $rest,$res)) {
      	$i ++;
      	if( $res[1] == "texte" ) {
      	    echo "$i : mot = '$res[1]'\tcontenu = <<<$res[2]$res[3]>>>\n";
      	    $rest = "";
      	} else {
      	    echo "$i : mot = '$res[1]'\tcontenu = <<<$res[2]>>>\n";
      	    $rest = $res[3];
      	}
          }
      } while($res);
      
      ?>

      Résultat :

      1 : mot = 'titre'       contenu = <<<Faut pas pusher en espagnol>>>
      2 : mot = 'rubrique'    contenu = <<<test>>>
      3 : mot = 'mot-cle'     contenu = <<<6,9>>>
      4 : mot = 'lang'        contenu = <<<es>>>
      5 : mot = 'texte'       contenu = <<<{{{Titre}}}la la
      la
      sdlkfmlskdfmksdf
      #kdf: mlskdf
      <code>sdffsdfsd#fsdfsdsdfsdf
      </code>
      <cadre>sdfsdfsdf>>>
    • Salut,

      Push est maintenant sur spip-zone, vous pouvez peut être y contribuer si vous voulez. (demander sur la liste spip-zone@rezo.net)

    • là franchement, c’est super !!!

      merci
      à propos, j’ai trouvé un utilitaire bien sympa pour tester des regexp... sur http://weitz.de/regex-coach

      pam

    Répondre à ce message

  • 1

    Eh bonsoir,

    je teste cette contrib qui a l’air du tonnerre...

    -  dans le sujet du mail je met : id_rubrique=2 (ou 2)

    -  j’ai le bon message en retour de push qui me dit d’aller voir le « spip.log »

    -  je vais voir le « spip.log » :

    Dec 04 00:17:11 84.7.244.190 (pid 3236) [PUSH] Message N°1 id_rubrique=2

    Dec 04 00:17:12 84.7.244.190 (pid 3236) [PUSH] Message N°2 2

    Dec 04 00:17:12 84.7.244.190 (pid 3236) [PUSH] nombre d’emails lus : 2

    C’est bien , et après il ne se passe rien dans la partie admin, pas de nouvel article en proposition... il est où ?

    J’ai comme l’impression d’avoir manqué une scène du film...
    Qu’est-ce que je n’ai pas fait..?

    Je suis sous Spip 1.8.2e

    ...chez Celeonet

    PS. Quel le moyen le plus rapide pour voir le « spip.log » ?

    le-clapotis

    Bon, amicalement jmarco

    • Bon,

      désolé pour le bruit, j’avais bien oublié qqchose :

      -  Ecrire SPIPOUNET dans l’objet du message...

      Et c’est tout bon,

      d’ailleurs le message de retour de push.php3 est bizarrement tout noir,

      mais c’est sans importance puisqu’en « sélectionnant tout » on voit toute l’explication de l’opération,

      et surtout en admin on retrouve le fameux article en attente de validation.

      Super, donc chez Celeonet çà marche.

      merci pour cette contrib.

      @+ jmarco

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom