Facteur

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

Facteur (1.8.11)

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

// Chargement de la fonction
$envoyer_mail = charger_fonction('envoyer_mail', 'inc/');
// Utilisation
$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

Description des options

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

$corps = array(
	'options' => 'valeur'
);

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
  • repondre_a : l’email à qui les réponses seront adressées, très utile dans le cas d’une utilisation d’un SMTP externe, qui va forcer l’envoi par un nom de domaine bien précis, dans ce cas, l’expéditeur est ce nom de domaine, et le « repondre_a » devient l’email de la personne qui devra recevoir la réponse (d’un help desk par exemple)
  • 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 (chemin sur le file system, pas une URL)
    • nom : le nom du fichier
    • encodage : comment sera encodé le fichier, par exemple « base64 »
    • mime : le type MIME du fichier

Exemple :

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

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 :

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

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

$corps = array( 
    'html' => $html, 
    'texte' => $texte, 
    'nom_envoyeur' => $nom_envoyeur 
     );

Activer le mode débug

Si l’envoi des envois échoue, vous pouvez activer le mode débug
Ajouter dans votre fichier config/mes_options.php

define('_LOG_FILTRE_GRAVITE', 8);
define('_FACTEUR_DEBUG_SMTP',4); // 0,1,2,3,4  est la valeur la plus verbeuse

Dernière modification de cette page le 13 février 2019

Discussion

120 discussions

  • Je me réponds à Moi même et aussi E-Papoulos que je remercie
    Oui le plugin Facteur remplace SMTP mail avec sarrkaspip3.0.3 et spip2.0.10 car cela marche chez moi.
    Toutefois je n’arrive pas à mettre plusieurs personnes comme destinataire de
    Formulaire de conatct avance - évolué ou est ce qu’il faut cocher je ne voie pas trop
    Par aillers sur sur le squelette sarkaspip3.0.3
    Au lieu que le formulaire se mette à la place de noistte formualire - conatct générique à gauche il reste comme une rubrique à part entière ;
    Et qd je clique sur noisette conatct générique de sraka à gauche, ceci me marque ce message curieux
    ERREUR 404 ;
    L’adresse URL que vous demandez n’existe pas. Le Plan du site peut vous aider à trouver l’information recherchée.

    Répondre à ce message

  • 1

    Bonjour ; Mail SMTP plugin ne marcherait plus IL SERAIT REMPLACE PAR FACTEUR
    POUR FORMULAIRE DE CONTACT AVANCE PEU T - ON PRENDRE FACTEUR EN LOCAL SUR WAMP SVP
    Le mail smtp ne marche plus sur les toutes dernières versions de sarkaspip3.0.3 et spip2.0.10
    En local sur wamp 1.7.0
    Dans configuration avancée dans spip2.0.10
    On a bien la Boite de dialogue
    Mais quand on remplit
    ex :
    smtp-q.otsqm.fr (*)
    port : 25
    J’ai bien fait les changements dans php.ini
    remplacé Localhost par ceci ci6dessus :(*)
    Il ne prend pas en compte
    C.a.d quand je valide sous spip 2.0.10
    La validation ne se fait pas ???
    Doc quand j’envoie de message dans le formulaire de
    Formulaire de conatct avance / évolué que j’ai installé
    Le message n’arrive pas à ma boite d’ e-mail
    Ni de personnes ?
    est ce que quelq’un a une solution SVP je suis vraiment bloqué
    Merci de votre aide SVP

    • J’ai pas tout compris. Et je ne connais pas Mail SMTP (à part que c’est le vieil ancêtre de Facteur). Donc je ne sais pas trop quoi dire, à part d’installer tout simplement Facteur et de le configurer.

    Répondre à ce message

  • 2

    Bonjour
    Juste un truc qui m’embete un peu, c’est le fait que le mot de passe smtp s’affiche en clair... Ca ne serait pas possible d’utiliser plutot un field password qui affiche des etoiles (histoire que les autres admin ne voient pas mon mot de passe) ?

    • Si, c’est d’ailleurs comme ça que c’était avant que Cédric change le formulaire de config en un formulaire CVT propre. Mais ça ne changerait pas grand chose pour vous : un champ password ne fait RIEN : il suffit de modifier le type=« password » en type=« text » dans Firebug (ou autre outil de webmaster), et hop on lit le contenu du champ.

      Je ne sais plus si c’est le cas, mais il faudrait surtout que la config de Facteur ne soit fait que par les comptes « webmaster » et non pas les comptes simplement « admin ». Dans ce cas, seules une ou deux personnes autorisées pourraient voir ce champ.

    • Oui, je sais qu’avec Firebug on peut dévoiler les étoiles... mais déjà ca serait un acte de « piratage » de le faire... Les admins non webmestres ne sont pas généralement des développeurs. Bref ca serait déjà ca. Si Cédric peut remettre le bon type, ça serait mieux.
      Et je viens de tester la config, elle accessible aux admins... Et oui, ça serait bien de la limiter aux webmasters.

    Répondre à ce message

  • Bonjour
    comment fait-on pour restreindre en fonction de leurs extensions les fichiers en pièces jointe ?
    je veux garder les doc, pdf, docx
    merci d’avance

    Répondre à ce message

  • 2

    Bonjour,

    Depuis plusieurs jours j’essaie d’utiliser conjointement Facteur et Clevermail 2.
    J’ai paramétré le Facteur de 2 manières sur OVH, les 2 m’envoient bien le mail de tests avec les accents.

    D’après ce que j’ai compris, le Facteur passe toutes les minutes ... et pourtant j’ai plusieurs messages fabriqués par Clevermail2 que le Facteur n’arrive pas à relever.

    Je n’arrive pas à trouver ce qui se passe, quelqu’un a t-il déjà eu ce type de problème ?

    Quels tests je peux lancer manuellement ?

    Merci de votre aide.

    ps : Je suis en SPIP 2.0.10, plugin Bonux, Facteur, CFG, Clevermail2 sur un hébergement OVH 90

    • Euh le facteur il fait rien du tout ! C’est juste un outil pour avoir plus d’options dans l’envoi de mails. Mais ça fait rien de lui-même. Donc le problème est à priori plutôt du côté de tel ou tel plugin qui l’utilise.

    • Merci pour ce retour rapide.

      Je vais donc repartir sur Clevermail qui utilise le Facteur.

    Répondre à ce message

  • 2

    Bonjour !

    Ce plugin semble très utile.

    Malheureusement je n’arrive pas à récuperer les valeurs des champs type « file » depuis les données du formulaire pour les utiliser dans le tableau pieces_jointes. J’ai essaié _request en plusieures variations, mais sans succés.

    Je suis sûr que la solution est triviale ... un petit exemple serait néanmoins extrêmement bienvenu :-)

    • Ce n’est pas vraiment en rapport avec ce plugin, mais tout simplement à l’utilisation des fichiers envoyés dans un formulaire HTML vers un script PHP :
      Chargements de fichiers par méthode POST

      Lors d’un envoi de formulaire, les fichiers ne sont pas dans le _request() mais sont dans la variable globale $_FILES.

      Vous pourrez trouver des exemples d’utilisation dans le code du plugin Médiathèque ou du plugin Contact avancé.

    • Merci de me diriger vers le plugin « Contact avancé » — cet exemple m’a permis de conçevoir mon propre formulaire. J’avais déjà compris que les données des fichiers postées se trouvent dans $_FILES, ce qui me manquait était la méthode de les passer d’une étape du processus à l’autre (vérifier -> traiter le formulaire). Au debut j’ai esperé que ça soit possible en utilisant « _request » ou une autre fonction déjà présente dans SPIP et je n’avais pas encore realisé qu’il faut coder ça moi-même ;-)

    Répondre à ce message

  • Hello tout le monde !!
    moi j’ai un probleme d’encodage des caracteres lors de la reception du formulaire sur ma boite mail (tester sur mail, yahoo, thunderbird) et le pb est partout
    quelqu’un aurait il une idée ?

    Merci beaucoup

    Répondre à ce message

  • 4

    Cela a l’air bien intéressant... Concrètement, quelles sont les répercussions (= quelle utilisation) dans l’écriture des squelettes ?

    • effectivement faire un petit exemple d’un formulaire qui envoie une pièce jointe, donnerait surement plus de clarté et de visibilité quant à l’utilisation de ce plugin Facteur coté squelettes !

      merci.

    • On n’envoie pas un formulaire avec un squelette que je sache. Facteur sert à avoir plus de possibilités avec la fonction « envoyer_mail() » de SPIP. On l’utilise donc dans le PHP, par exemple dans la fonction « traiter » d’un formulaire CVT. Je n’ai pas en tête d’exemple concis d’utilisation, peut-être que ça viendra...

    • Oui, tu as raison, Facteur sert à envoyer les données d’un formulaire par exemple par email par exemple, bien sur il faut créer un formulaire CVT, je vais essayer d’écrire un petit exemple dès que j’ai un moment.

      un petit formulaire de contact avec envoi d’une pièce jointe, voilà un bon exemple tiens !

      @+

    • @ Quand un tel exemple sera réalisé, ce serait sans doute pas mal de le faire figurer dans l’article, « à titre d’exemple » ! Qu’en penses-tu ?

    Répondre à ce message

  • Super, fonctionne très simplement et efficacement (Spip 2).
    Merci !

    Répondre à ce message

  • Juste un mot : INDISPENSABLE

    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