SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

273 Plugins, 191 contribs sur SPIP-Zone, 117 visiteurs en ce moment

Accueil du site > Interactivité, échanges > Email, listes de diffusion > Facteur > Facteur

Facteur

21 janvier 2010 – par RastaPopoulos – 151 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

38 votes

Un plugin pour regrouper toutes les fonctions avancées autour de l’envoi de courriels.

Introduction

SPIP propose une fonction générique envoyer_mail() pour envoyer un courriel. Elle est assez simple d’utilisation mais peut paraître limitée lorsqu’on veut configurer des options plus complexes : envoi par SMTP, ajout de pièces jointes, etc.

Le plugin Facteur propose d’intégrer proprement à SPIP la librairie PHPMailer. Pour que les fonctionnalités soient immédiatement disponibles, Facteur surcharge de manière compatible la fonction envoyer_mail().

Installation

Zip - 115.5 ko
Télécharger le plugin

Placer le contenu du paquet ZIP dans votre dossier plugins/ et activer Facteur dans l’interface d’administration des plugins.

Vous pouvez configurer les options d’envoi (SMTP notamment) en cliquant sur Configuration, puis sur Facteur.

Appel de la fonction

  1. // Chargement de la fonction
  2. $envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
  3. // Utilisation
  4. $ok = $envoyer_mail(...);

Utilisation

Voici d’abord la fonction standard de SPIP :

  1. function inc_envoyer_mail($destinataire, $sujet, $texte, $from = "", $headers = ""){}
  • $destinataire : adresse de courriel du destinataire
  • $sujet : sujet du courriel
  • $texte : texte brut du message
  • $from : adresse de courriel de l’envoyeur
  • $headers : ajout d’entêtes supplémentaires au message

Avec le plugin Facteur, vous pouvez déjà utiliser cette fonction de la même façon. Ce qui signifie que le plugin ne casse pas l’existant si votre code l’utilisait déjà.

Voilà comment est déclarée la fonction dans Facteur et ce qui change :

  1. function inc_envoyer_mail($destinataire, $sujet, $corps, $from = "", $headers = ""){}
  • $destinataire : peut être le destinataire ou bien un tableau où chaque ligne contient un destinataire
  • $corps : peut être le texte brut ou bien un tableau associatif contenant toutes les options de message

Descriptions des options

Le tableau $corps des options se présente comme suit :

  1. $corps = array(
  2.         'options' => 'valeur'
  3. );

Et voici les options possibles :

  • html : le corps du message en version HTML
  • texte : le corps du message en version texte brut
  • nom_envoyeur : le nom de l’expéditeur
  • cc : une ou des adresses de courriel à mettre en copie, soit une adresse en chaine de caractère, soit plusieurs adresses dans un tableau
  • bcc : la même chose mais en copie cachée
  • pieces_jointes : un tableau décrivant les pièces jointes, chaque élément est lui-même un tableau associatif décrivant une pièce jointe comme ça :
    • chemin : le chemin complet du fichier
    • nom : le nom du fichier
    • encodage : comment sera encodé le fichier, par exemple « base64 »
    • mime : le type MIME du fichier

Exemple :

  1. $corps = array(
  2.    ’html’ => $message,
  3.    'cc' => array('truc@truc', 'bidule@bidule'),
  4.    ’pieces_jointes’ => array(
  5.            array(’chemin’ => $chemin_absolu,
  6.            ’nom’ => ’azerty’,
  7.            ’encodage’ => ’base64’,
  8.            ’mime’ => ’image/jpeg’)
  9.            )
  10.     );

Exemples d’usages

-  On pourra par exemple utiliser un squelette existant pour générer le message HTML :

  1. $html = recuperer_fond("inclure/mail", array('id_article' => $id_article));

-  Inversement, on pourra générer la version texte du message à partir de sa version HTML en utilisant la méthode html2text de la classe Facteur :

  1. include_spip('classes/facteur');
  2. $texte = Facteur::html2text($html);

-  Enfin, on pourra rassembler ces éléments dans le tableau avant de les envoyer :

  1. $corps = array(
  2.     'html' => $html,
  3.     'texte' => $texte,
  4.     'nom_envoyeur' => $nom_envoyeur
  5.      );
Retour en haut de la page

Vos commentaires

  • Le 26 janvier à 16:55, par zaa En réponse à : Facteur

    Bonjour,

    Serait-il possible d’ajouter dans la configuration de Facteur, la possibilité d’inscrire un sujet (toujours le même) aux messages envoyés à partir de Facteur ?

    La raison est que je travaille sur un site hébergé à l’université et tous les messages envoyés à partir de la fonction mail() de PHP sont bloqués. Je peux faire débloquer une adresse courriel et un sujet. Ainsi, si je pouvais configurer Facteur pour qu’il utilise toujours le même sujet dans l’envoi de courriel, ça serait super !!!

    Merci de votre aide !

    Zaa

    • Le 26 janvier à 17:12, par RastaPopoulos En réponse à : Facteur

      Je pense que ce besoin est trop spécifique pour ajouter une option pour tous. Car ce que tu demandes c’est même pas d’avoir un sujet par défaut lorsqu’il n’y en a pas (ça n’arrive à vrai dire jamais) mais de surcharger le sujet qui est déjà défini par ceux qui appellent la fonction envoyer_mail() de SPIP.

      En revanche, en PHP tu peux t’insérer dans la porte d’entrée facteur_pre_envoi qui reçoit en paramètre un objet PHPMailer. Tu peux alors redéfinir le paramètre $facteur->Subject = ... avant l’envoi du courrier.

      Par contre, je ne connais pas ton utilisation, mais cela signifie que tous les mails auront le même sujet, que ce soit les mails de SPIP, les mails de notifications de tel ou tel plugins, etc. Pas très pratique pour ceux qui les recevront.

      Pourquoi n’utilises-tu pas plutôt la possibilité de configurer explicitement le serveur SMTP utilisé pour envoyer les mails ? Ce qui fait qu’ils ne partent pas depuis ton serveur mais depuis un que tu configures (Gmail ou autre fournisseur).

    • Le 26 janvier à 17:46, par zaa En réponse à : Facteur

      Merci beaucoup pour tes réponses !

      Je vais essayer le SMTP !

    Répondre à ce message

  • Le 20 décembre 2011 à 11:28, par Voldor En réponse à : Facteur

    Bonjour,

    Qd je teste Facteur, j’ai ceci :

    Parse error : syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ’}’ in /htdocs/public/www/Om/plugins/auto/facteur/inline-style/InlineStyle.php on line 37

    et pas d’envoi de mail...

    Vous me conseillez de faire quoi ?

    Merci d’avance !

    • Le 23 décembre 2011 à 13:55, par Marting En réponse à : Facteur

      Salut,
      J’ai eu le même problème, après avoir passé du temps à chercher j’ai vu qu’en désactivant l’option suivante ça fonctionne :
      Transformer les styles contenus entre et en des styles « en ligne », utile pour les webmails car les styles en ligne ont la priorité sur les styles externes.

      Ça doit être un problème de compatibilté de la bibliothèque utilisée avec Php4.

      Ouf !

    Répondre à ce message

  • Le 10 novembre 2011 à 07:11, par mbourlier En réponse à : Facteur

    Bonjour,
    Mon site est sous Spip 2.1.11, squelette Sarka-spip 3.1.0 et ce matin le passage automatique via « le couteau suisse » de la révision 52840 du 07/10 à la révision 54251 du 09/11 ne se fait pas correctement. Mais j’ai remarqué que l’installation des paquets se fait dans le dossier /lib/facteur ; est-ce normal ?

    Cordialement
    M. BOURLIER

    • Le 10 novembre 2011 à 09:06, par Frédéric En réponse à : Facteur

      Bonjour,
      Même souci, la mise à jour (via le couteau suisse et en direct via le gestionnaire de plugin) m’indique qu’elle ne peut se faire car le répertoire ../lib n’existe pas !
      J’attends sagement une nouvelle version...
      Bonne journée
      Frédéric

    • Le 10 novembre 2011 à 09:44, par RastaPopoulos En réponse à : Facteur

    • Le 10 novembre 2011 à 10:16, par mbourlier En réponse à : Facteur

      Bonjour,
      Loin de moi l’idée de mettre en cause directement le plugin. J’ai désactivé le CS et fait la mise à jour de Facteur par FTP. Un autre problème apparaît maintenant dans la liste des plugins : Facteur est visible à 3 endroits (plugins/auto, plugins/auto/facteur/trunck et plugins/auto/facteur/branches/v1 (voir le fichier joint).
      Pour l’instant, je reviens à la version précédente en attendant.
      Cordialement

      M. BOURLIER

      PNG - 24.4 ko
    • Le 10 novembre 2011 à 10:23, par RastaPopoulos En réponse à : Facteur

      Apparemment il y a un bug avec la génération des paquets.

      Il y a deux paquets pour ce plugin : « facteur.zip » contenant la version stable pour 2.1 et « facteur-2.0.zip » contenant la version pour SPIP 3.

      Le deuxième ZIP est correcte est contient bien uniquement la bonne version. Mais « facteur.zip » contient actuellement TOUT le dossier de Facteur donc avec toutes les versions.

      On essaye de comprendre.

    • Le 10 novembre 2011 à 17:57, par mbourlier En réponse à : Facteur

      Bonsoir,

      Tout est rentré dans l’ordre avec ces modifications. Bravo et merci pour votre réactivité.
      Cordialement

      M. BOURLIER

    Répondre à ce message

  • Le 4 novembre 2011 à 15:03, par inaden En réponse à : Facteur

    Bonjour,
    lorsque je fais un essai d’envoi de mail depuis l’interface de gestion de facteur, avec « utiliser la fonction mail de php », j’ai un message qui me dis que le mail a bien été envoyé, mais je ne le reçois pas.
    Il y a de plus un cadre qui s’ouvre dans la page (iframe ?) avec une page spip d’erreur avec le texte « emails/test_email_html : accès interdit »

    Si quelqu’un a une idée, je suis preneur.
    Merci d’avance.

    Répondre à ce message

  • Le 5 septembre 2011 à 18:12, par Mojo En réponse à : Facteur

    Salut !
    Existe-t-il un moyen propre de passer un squelette à Facteur ? Je compte utiliser un modèle de mail précis pour l’envoi automatique de formulaires Formidable ! via Facteur.
    J’aurai besoin de lui fournir un titre et un message qui sont accédés via les balises de contexte dans le squelette.

    Mojo

    • Le 14 septembre 2011 à 11:06, par RastaPopoulos En réponse à : Facteur

      Ben si tu l’utilises en PHP, tu mets bien ce que tu veux dans les paramètres, donc la fonction « recuperer_fond(squelette, tableau de contexte) » qui va te renvoyer une chaîne de caractères correspondant à la compilation d’un squelette.

    Répondre à ce message

  • Le 13 septembre 2011 à 12:22, par Etienne Loth En réponse à : Facteur

    Bonjour,

    Est-il possible d’ajouter une valeur spécifique pour le Reply-To ? Si oui comment ?

    Merci beaucoup,

    Répondre à ce message

  • Le 6 juin 2011 à 11:50, par mccaffery.martin En réponse à : Facteur

    Bonjour à tous,

    Nous (Paolo et moi) avons découvert un problème avec la vérification des adresses emails avec le plugin. Il paraît qu’en PHP 5.2.12 (sur FreeBSD) la fonction filter_var (appelée dans phpmailer-php5/class.phpmailer.php ::ValidateAddress() ) ne fonctionne pas correctement et rejette toutes les addresse qu’on lui donne. Le résultat est que toute adresse écrite donne les erreurs « Invalid address : [adresse]You must provide at least one recipient email address. »

    Ce problème est réglé en la version 5.3.3, mais s’il n’est pas possible de mettre à jour la version de votre serveur, vous pouvez l’éviter en supprimant l’appel à filter_var dans la fonction ; l’option avec la preg_match marche très bien.

    • Le 6 juin 2011 à 14:00, par RastaPopoulos En réponse à : Facteur

      Super, merci pour ce rapport ! Il fallait le trouver ce bug...

    • Le 6 juin 2011 à 15:01, par paolo En réponse à : Facteur

      Précision : On ne sait pas que c’est la version 5.3.3 qui résout ce problème. Plutôt nous constatons qu’avec 5.2.12 cela ne marche pas, mais avec 5.3.3 ça marche.

    • Le 2 septembre 2011 à 10:35, par Mojo En réponse à : Facteur

      Salut !
      Où en êtes-vous avec ce problème ? Je rencontre actuellement un bug similaire : tous mes formulaires issus du plugin fonctionnent bien, les emails partent, la base est renseignée, le message de confirmation s’affiche bien... mais « Invalid address : » s’affiche systématiquement en haut de page pour chaque email utilisé. Ce ne serait pas trop grave si ce genre d’echo ne plantait pas systématiquement les pages affichées par IE.
      Y a-t-il moyen de corriger ça dans le plugin, en l’absence d’une intervention possible côté serveur ?

      Mojo

    • Le 2 septembre 2011 à 11:31, par Mojo En réponse à : Facteur

      J’ai trouvé le coupable au moyen de quelques debug bien placés. C’est la fonction AddAnAddress() qui me posait problème : en fait elle appelle systématiquement ValidateAddress() pour vérifier tous les champs adresse des formulaires... même les champs vides (en l’occurence pour moi, les champs Cc et Bc) !
      J’ai donc ajouté un contrôle pour encadrer l’appel de ValidateAddress() dans AddAnAddress(), de sorte que l’on ne contrôle les adresse supplémentaires que si elles sont effectivement renseignées. Ajouter la correction dans ValidateAddress serait une erreur puisque il faut pouvoir vérifier que certains champs adresses sont effectivement remplis et renvoyer une erreur le cas échéant.

      1. if($address!=""){
      2.         if (!self::ValidateAddress($address)) {
      3. ...
      4. }

      C’est du bricolage à la va-vite... pas trop le temps de faire mieux dans l’immédiat.

      Mojo

    Répondre à ce message

  • Le 15 août 2011 à 20:28, par Jeannot En réponse à : Facteur

    Bonjour,

    j’ai deux légers soucis avec Facteur (SPIP 2.1.8 et facteur 1.7.2 [49786]) :

    • Quand le corps de mon message contient un caractère étrange, par exemple œ le message arrive avec un &#339; à la place. Mon message est à priori en UTF-8.
    • J’appelle la fonction :
      $envoyer_mail($destinataire,$sujet,$corps,$from);
      avec dans le champs $from une chaine du type nom <adresse@serveur.truc> et j’ai n’importe quoi comme expéditeur à l’arrivée du mail, genre <nom <adresse@serveur.truc>><<nom <adresse@serveur.truc>>>

    Tout cela marche bien si Facteur est désactivé (en utilisant la fonction envoyer_mail du core). Une idée ?

    merci

    Répondre à ce message

  • Le 12 juin 2011 à 04:03, par  ??? En réponse à : Facteur

    Bonjour,
    J’utilise ce plugin pour pouvoir attaché des fichiers à mon formulaire. Alors j’avoue que je suis un peu perdu pour l’utilisation de ce plugin...quels sont les fichiers du plugin qu’on doit modifier pour pouvoir attaché un fichier ??? Voici mon formulaire ici l’envoie du formulaire ce passe surper bien sauf quand j’essaie d’upload un fichier (là rien ne se passe). Merci de votre aide.

    • Le 12 juin 2011 à 13:32, par RastaPopoulos En réponse à : Facteur

      Pourquoi faudrait-il modifier des fichiers ?

      Il faut déjà apprendre à uploader des fichiers, et ensuite utiliser ce fichier téléchargé pour l’envoyer par mail avec ce qui est décrit plus haut dans cette documentation.

    • Le 12 juin 2011 à 18:06, par  ??? En réponse à : Facteur

      Excuses moi d’insister, mais j’ai retourné la question dans tous les sens mais j’ai toujours pas bien compris peu être parce que je ne connais rien en dev. J’upload le fichier mais l’envoie pause un problème, si je clique sur le bouton envoie rien ne se passe http://www.enseigneraletranger.org/...
      S’il vous plait clique sur le lien et peut être tu verra d’où vient le problème.

      Tu me dis qu’on doit pas modifier les fichiers, alors dans ce cas ou est ce que je dois mettre ceci ??

      $corps = array(  
              ’html’ => $message,  
              'cc' => array('truc@truc', 'bidule@bidule'),  
              ’pieces_jointes’ => array(  
                      array(’chemin’ => $chemin_absolu,  
                     ’nom’ => ’azerty’,  
                      ’encodage’ => ’base64’,  
                      ’mime’ => ’image/jpeg’)  
                      )
      );

      Et surtout quand je clique sur le bonton envoyé pourquoi rien ne se passe ??? qu’est ce que j’ai loupé ? Merci pour votre aide

    • Le 12 juin 2011 à 21:41, par RastaPopoulos En réponse à : Facteur

      Personnellement, j’ai beau relire : je ne comprends absolument pas de quoi tu parles. :)

      Tu as fait un formulaire ? De quoi parles-tu, à la base, au démarrage du tout début du commencement ? :)

      Je rappelle que là on est sur le forum du plugin Facteur, qui est un outil pour développeur, pour aider les développeurs de code PHP à envoyer plus facilement des emails.

    • Le 12 juin 2011 à 22:36, par  ??? En réponse à : Facteur

      Merci pour votre réponse rapide, ok je commence par le commencement
      1/ j’ai utilisé le plugin de formulaire de contact avancé pour pouvoir envoyé les formulaires, ce plugin n’autorise pas les pièces jointes. Pour cela, il faut utiliser le plugin facteur( c’est là que tu rentres en jeux :) ).
      2/ Bon j’ai installé le plugin facteur mais j’arrive pas à le faire tourné, aprés avoir fait un upload dès que je clique sur le bouton envoyer rien ne se passe. C’est pourquoi je t’ai filé le lien du site de la page en question pour que cela t’aide a comprendre mon problème. J’espère que cette fois je suis clair. Merci encore

    • Le 12 juin 2011 à 23:08, par RastaPopoulos En réponse à : Facteur

      Ah ok, donc ce n’est pas un problème du plugin Facteur, mais un problème du formulaire de contact avancé. Donc faut poser la question sur son forum. Sinon on va s’y perdre et ça n’aidera pas les autres.

    Répondre à ce message

  • Le 2 juin 2011 à 15:49, par Philippe En réponse à : Facteur

    impossible de faire fonctionner le plugin :
    Fichier configurer_facteur introuvable
    SPIP 2.1.10 [17657]
    help !

    • Le 3 juin 2011 à 11:29, par RastaPopoulos En réponse à : Facteur

      Et toutes les plugins à jour ? Et testé en enlevant les plugins non nécessaires pour être sûr que ça vient bien de celui là ?

    • Le 3 juin 2011 à 12:32, par Philippe En réponse à : Facteur

      Oui hélas,
      Le problème « Fichier configurer_facteur introuvable » est identique avec le plugin CleverMail 2 qui, pour fonctionner, a besoin de Facteur.
      Donc en voulant configurer Facteur, je retrouve le même message « Fichier configurer_facteur introuvable ».
      Sur ta remarque, j’ai retiré les autres plugins pour tester mais rien n’y fait.

      En regardant dans les fichiers des plugins Facteur et CleverMail, je ne trouve pas le fichier configurer_nom_du_plugin". Donc je me demande si le problème ne vient pas d’ailleurs.

      Merci de ton aide,
      Philippe

    • Le 3 juin 2011 à 14:49, par RastaPopoulos En réponse à : Facteur

      Sauf que tu ne dis à aucun moment OÙ tu as ce message d’erreur ? Donc comment reproduire ?

      La configuration se trouve dans Configuration => Facteur et la page exacte est « / ?exec=facteur », à aucun moment il n’y a d’appel de page « configurer_facteur ».

    • Le 3 juin 2011 à 15:37, par Philippe En réponse à : Facteur

      Effectivement. je vais dans le menu « Configuration » > Plugins actifs > Facteur > l’icône clef à molette et tournevis. Et là le problème se reproduit tant que tu veux.

      Je viens de comprendre ce qui ne vas pas : en cliquant sur cette icône, on fait appel au script configurer_facteur … qui n’existe pas. Quand je remplace « configurer_facteur » dans l’URL par «  ?exec=facteur », çà marche.
      Idem pour Clevermail.

      C’est donc que j’ai un mauvais lien sur l’icône de configuration de ces 2 plugins.

      PNG - 40.3 ko
    • Le 3 juin 2011 à 17:14, par RastaPopoulos En réponse à : Facteur

      Ce que je ne comprends pas c’est que moi je n’ai jamais eu cette icône (ce qui est normal puisqu’elle n’a pas de raison d’être vu qu’il n’y a ni page CFG ni exec=configurer_facteur) su aucun des sites où j’ai Facteur.

    • Le 3 juin 2011 à 22:34, par Philippe En réponse à : Facteur

      A mon avis, le problème vient du plugin CFG, mais je ne vois pas trop comment résoudre le problème car j’ai installé la dernière version.

    • Le 3 juin 2011 à 23:31, par Philippe En réponse à : Facteur

      Euréka !

      Pour accéder au plugin directement il faut une URL de ce type : http://URL/ecrire/?exec=clevermail.
      En essayant de passer par le plugin CFG, on tombe sur un mauvais lien.

      Dans une page HTML du squelette, pour que l’appel au formulaire « #FORMULAIRE_CLEVERMAIL » donne un résultat, il faut :

      * qu’une newsletter soit créée ;
      * qu’il y au moins un abonné ;
      * que la modération soit « ouverte » et pas fermée

      Le problème venait donc de CleverMail, pas de Facteur.
      Merci pour le coup de main qui m’a fait chercher dans le bon sens.
      Philippe

    Répondre à ce message

Répondre à cet article

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Corbeille

    2 novembre 2008 – 27 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un plugin pour retrouver les éléments supprimés dans la corbeille.

  • Formulaire de contact libre

    27 avril 2011 – 35 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Dans SPIP il n’y a pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs. Cette phrase de Romy, dans son article Une page de contact dans mon SPIP, pointe un petit manque de SPIP. La possibilité d’insérer rapidement un (...)

  • Typographie avancée

    3 mars 2010 – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    « Typographie avancée » active automatiquement un grand nombre d’automatismes destinés à affiner la typographie des textes produits par SPIP. Nécessite PHP 5 au minimum. « Typographie avancée » est l’adaptation, pour SPIP, de la classe « PHP Typography », (...)

  • Plugin Convertisseur

    24 février 2008 – 15 <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Convertit différents formats d’articles (wiki, docx, pdf, etc..). en format SPIP (texte avec les raccourcis typographiques SPIP)

  • Thèmes pour l’interface privée

    22 février 2010 – <blink style='color:red;'>public|spip|ecrire:commentaires</blink>

    Un sélecteur d’interfaces graphiques pour l’espace privé de SPIP 2.1. Une petite collection d’interfaces est livrée avec le plugin. Ce plugin permet à chaque participant à l’espace privé de sélectionner sa propre interface graphique en fonction de ses (...)