Facteur

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

Important !

A partir de la version 4.3.0 si vous utilisez un fournisseur commercial pour l’envoi des mails (Mailjet, Sendinblue, Mandrill) vous devez installer en plus le plugin Mailshot pour conserver votre fournisseur d’envoi !

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

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.
Exemple en local, entrer smtp.orange.fr et port 25.

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 :

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 :

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 :

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

-  Générer le message HTML avec une variable $texte en utilisant le squelette d’email fourni par le plugin

$html = recuperer_fond("emails/texte", array('texte' => $texte));

-  Générer le message HTML avec une variable $html en utilisant le squelette d’email fourni par le plugin

$html = recuperer_fond("emails/texte", array('html' => $html));

-  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 :

$facteur_mail_html2text = charger_fonction('facteur_mail_html2text', 'inc');
$message_texte = $facteur_mail_html2text($message_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

Discussion

144 discussions

  • 6

    Bonjour,

    « Facteur » fonctionne (très bien) en utilisant la fonction mail de PHP mais je n’avais pas besoin de ce plugin pour ça... je pouvais déjà envoyer un mail à partir du formulaire de contact de mon site.

    J’ai un souci pour la configuration du mailer (SMTP) (lorsque je veux envoyer une newsletter)

    J’ai fait de multiples essais d’abord à partir du smtp de Free (qui est aussi mon hébergeur)
    -  J’ai d’abord utilisé les paramètres qui fonctionnent sur mon PC (via Outlook) et sur mon smartphone, et me permettent d’envoyer des mails quels que soient les fournisseurs d’accès (free, orange, sfr, bouygues,...)
    -  J’ai ensuite essayé.. au cas où... mais sans succès toutes les combinaisons possibles entre les ports (25, 465, 587) et le type de sécurisation (non, SSL, TLS)

    -  J’ai fait de même avec mon compte Gmail sans plus de succès

    -  J’ai ouvert des comptes chez Mailjet et chez Mandrill.. et utilisé sans plus de succès les codes fournis (j’avais bien auparavant confirmé mon inscription avec le lien reçu par mail)...

    Quelqu’un a-t-il eu le même problème... et surtout trouvé la parade...
    MERCI D’AVANCE !

    P.S. J’ai aussi laissé un post sur le forum de « Mailshot » qui peut utiliser les paramètres de « Facteur » et avec lequel j’ai le même souci)

    • BOUDRY michel

      NOUS, avons tous DEUX besoin d’aide

      MERCI de votre attention

      Désolé

      Je confirme
      mêmes blocages chez Web4All Spip 3.0.13 Facteur 3.0.7

      essais multiples smtp et smtps
      le smtp.web4all existe bien et est accessible de ma machine
       ; <<>> DiG 9.4.3-P3 <<>> smtp.web4all.fr any +multiline +nocomments +nocmd +noquestion +nostats +search
       ; ; global options : printcmd
      smtp.web4all.fr. 86400 IN A 213.152.15.69
      smtp.web4all.fr. 86400 IN A 213.152.15.68
      smtp.web4all.fr. 86400 IN A 213.152.15.67
      smtp.web4all.fr. 86400 IN A 213.152.15.70

      Selon web4All réglages smtp.web4all.fr port 25 suffit

      Facteur 3.0.7 configuré en SMTP, smtp.web4all.fr, port 25, sans authentification, sans sécurisation.
      Test de configuration
      donne : écran d’erreur dans spip configuration facteur
      « Il y a une ou plusieurs erreurs de configuration. Veuillez vérifier le contenu du formulaire. »
      (contenu du formulaire crée automatiquement par Facteur sans aucune retouche)
      aucun envoi, aucune réception

      alors que
      Facteur configuré en Utiliser la fonction mail de PHP
      donne :
      aucune erreur
      bon envoi, bonne réception vérifiée !

      PROBLEME SEMBLANT REEL ... et sur deux exemples

    • De ta machine, tu as forcément un login et un mot de passe pour utiliser leur SMTP, non ? Ça me paraîtrait bizarre que n’importe qui puisse utiliser leurs serveurs sans authentification.

      Le documentation dit d’ailleurs :
      http://faq.web4all.fr/content/12/74/fr/comment-configurer-mon-logiciel-de-messagerie-.html

      • Nom d’utilisateur : votre adresse mail (exemple : test@mondomaine.fr)
      • Mot de passe : celui choisi à la création de l’adresse mail

      Et il est possible d’utiliser la sécurité SSL, port 465, c’est toujours mieux quand c’est possible.

    • BOUDRY michel

      j’ai effectivement bien pris en compte mes acces à ce SMTP
      et j’ai bien mis
      test@mondomaine.fr
      et
      motdepassepourcetteadresseemail
      dans les champs correspondant lors de la configuration en smtp soit de Facteur soit de Mailshot ... sans jamais aboutir à un bon envoi (hors choix fonction envoi par PHP pour le SEUL Facteur ... impossible de faire ce choix pour MailShot .....voir plus bas)

      j’ai, comme Michel M en Novembre, essayé vraiment tous les réglages possibles avec le smtp.web4all.fr avec ou sans identification avec ou sans cryptage pour MailShot

      .. cela n’a PAS levé le blocage

      Par ailleurs contrairement aux message d’explication de blocage RIEN absolument RIEN dans les fichiers log !

      le smtp choisi n’est pas fonctionnel
      ++++++++++++++++

      Depuis j’ai vu une chose
      cf image jointe

      Si Facteur est configuré en envoi par les fonctions de PHP
      Mailshot .... configuré APRES Facteur, ne permet PAS d’utiliser cette configuration (PHP) et IMPOSE le choix d’un SMTP ...
      smtp 25, smtps, smtp 465, id et pwd, RIEN, pour moi, m’a jamais abouti à un bon envoi.... écran d’erreur blocage sur le smtp

      ALORS que seul, Facteur en configuration utilisation des fonction s PHP d’envoi (pas Smtp) permet l’envoi avec succès

      Pourquoi la configuration de MailShot ne peut PAS utiliser le réglages de Facteur pour les envois.. alors que les réglages sont les seuls qui permettent un bon fonctionnement des envois

      j’ai desinstallé puis réinstallé Facteur Mailshot et le reste .... Configuré Mailshot AVANT Facteur ... essayé de nombreux réglages ... AUCUN succés d’envoi des message même en attendant .. un certain temps.... Echecs à tous les coups

      DOMMAGE

      je continue et commente....

      MERCI de votre aide M RASTAPOULOS

    • Bonsoir,

      J’ai exactement le même problème : impossible d’envoyer via la configuration SMTP.
      Dans les logs, j’ai ce message : Erreur Envoi mail via Facteur : SMTP Error : Could not authenticate.

      Quelqu’un a-t-il trouvé une solution ?

      Merci d’avance.

    • Philivert

      Bonsoir,
      Chez Web4all j’utilise sans pb Facteur et Mailshot avec Newsletters et pas de pb d’envoi.

      Conf de Mailshot :
      -  Utiliser le même service d’envoi que pour les autres mails
      -  envoi rapide
      -  adresse d’envoi : personnaliser ces réglages...

      Conf de Facteur :
      -  personnaliser ces réglages... = même chose que pour Mailshot
      -  utiliser SMTP : smtp.web4all.fr port 25
      -  requiert une authent = oui avec login et password du compte mail
      -  connexion sécurisée = non

    • BOUDRY Michel

      MERCI de vos aides et vos retours d’expériences

      Je viens de me rendre compte que l’ordre dans lequel on configure Facteur et Mailshot n’est, pour moi, absolument PAS indifférent

      1/ Facteur configuré AVANT Mailshot et alors je n’ai PAS le blocage bien visible sur ma copie d’écran (voir plus haut zone à fond « barres grises à 45 degrés » et « utiliser le même service ... » non selectionable)

      2/ Mailshot configuré AVANT Facteur et là j’ai bien le blocage

      Si cela peut aider

    Répondre à ce message

  • 1
    Jean-Louis

    Bonjour,
    J’essaye newsletter avec les plugins conseillés en Spip 3.0.14, mon site a aussi Sarkaspip 3.2.36.
    Sur le site local dans mon ordi tout est ok pour l’envoi de newsletter et les listes de newsletter, très encouragé par ce résultat, j’ai transposé la même configuration sur mon site distant.
    Échec, j’ai essayé toutes les configurations possibles, fonction mail de PHP, SMTP sécurisé ou non, avec les différents ports, j’ai toujours : Erreur Envoi mail via Facteur : The following From address failed : jxxxxxx@orange.fr j’ai essayé mon adresse mail chez l’hébergeur du site sans succès, pensant que c’était une restriction.
    La lecture des logs ne m’éclaire pas du tout.
    Je ne suis grand débutant. Pourriez-vous m’éclairer.
    Remerciements
    Jean-Louis

    • Jean-Louis

      Je me réponds, pour résoudre ce problème, je me suis créé une adresse mail sur le webmail du serveur du site en question. Avec cette adresse tout est rentré dans l’ordre.
      Merci pour ce plugin super.
      Bien cordialement
      Jean-Louis

    Répondre à ce message

  • 2

    Bonjour,

    Merci pour cet excellent plugin !
    Une petite nuisance c’est le texte « Envoyé par » codé en dur dans email/texte.html.

    Merci pour une correction dans la prochaine version !

    Répondre à ce message

  • 1

    Hello !

    Lorsqu’un article est publié, un mail est envoyé contenant l’adresse de cet article.
    Sauf que le lien est étrangement raccourci et n’est pas bon...
    Ainsi, le lien raccourci qui apparaît est par exemple http://www.latoilescoute.net/pasta-...,4914
    Il pointe vers http://www.latoilescoute.net/pasta-sauce-aux-girolles-et ce qui génère une belle erreur 404 puisque le bon lien est http://www.latoilescoute.net/pasta-sauce-aux-girolles-et,4914 (avec le numéro à la fin)

    Je ne parviens pas à trouver où je peux modifier le squelette pour que le lien soit correct... Qui saurait m’aider ?
    (et sinon, la sauce vers laquelle pointe le lien est vachement bonne, goûtez-là !)

    Répondre à ce message

  • Bonjour

    j’utilise sur mon site Saisies pour formulaires 1.27.2

    et je souhoate contournéer le pb de mail de php

    en utilisant facteur, comment configurer l’ensemble pour que le fomrulaire partent via smtp ?

    merci

    Répondre à ce message

  • 6
    Horetol

    Bonjour,

    Lors de l’envoi, via Facteur, des résultats d’un formulaire construit avec Formidable, j’ai ce message d’erreurs :

    Warning: file_exists() [function.file-exists]: 
    File name is longer than the maximum allowed path length on this platform (4096): 
    <p> Formulaire "Prospects AFEST" post&amp;amp;amp;amp;eacute; le 25/08/2013 &amp;amp;amp;amp;agrave; 14:49:00. <br/> 
    <a href="http://www.afest.org/prospects-afest.html?id_formulaire=1">Depuis cette page</a>. 
    </p> <div class="afficher afficher_explication_2 saisie_explication sans_reponse"> </div> 
    <div class="afficher afficher_date_1 saisie_date"> 
    <strong class="label">Date d'inscription</strong> 
    <div class="valeur"> <p class="date">05/06/2013</p> </div> 
    </div> <div class="afficher afficher_fieldset_1 saisie_fieldset"> 
    <strong class="label">Coordonn&amp;amp;amp;amp;#233;es</strong> <div class="valeur"> 
    <h3 class in /home/afestor/public_html/plugins/auto/facteur/inline-style/InlineStyle.php on line 57

    Je ne sais pas comment contourner ou corriger la ou les erreurs.

    Merci de votre aide.

    • Bonjour

      Le formulaire demande quoi comme information ? Manifestement les réponses sont lourdes.

    • Bonjour,

      Le formulaire demande peu d’informations. Ci-dessous un exemple de données transmises et reçues via ce formulaire :
      ============
      Formulaire « Inscriptions aux activités » posté le 02/09/2013 à 11:42:52.
      Depuis cette page.

      Date d’inscription
      05/09/2013

      Evènement n°
      2093

      Auteurs
      HOEVELER Jeannette (385)

      Membre n° 
      574

      Nombre de participants
      2

      Commentaire
      Sans réponse

      Prix
      35

      Date du paiement
      13/09/2013

      Montant remboursement (en €uros sans le sigle €)
      Sans réponse

      Motif remboursement
      Sans réponse

      En liste d’attente
      Non
      ============

      En fait, en dehors de ce message, tout fonctionne (a priori) correctement : les réponses au formulaire arrivent bien via un mail, elles sont bien enregistrées dans table correspondante de Formidable et dans la table gérée par FormiTable.

      Pour le cas où ce serait utile, un copie de la page de configuration du formulaire.

      Merci de votre aide.

    • Faut désactiver « Inline Style » c’est mal géré et ça pète dans plusieurs cas. En tout cas ça ne marche pas pour tout le monde.

    • Merci.
      En fait dans ma réponse je me suis trompé .... de site !

      Celui en exemple dans ma réponse marche très bien (Age d’or de France) avec même version de spip et mêmes versions des plugins Formidable et Facteur.

      C’est sur celui de l’AFEST que j’ai les erreurs signalées. Les informations demandées via le formulaire sont similaires.

      J’ai désactivé les lignes 57 à 62 de InlineStyle.php et le message d’erreur a bien disparu.

    • On ne touche pas au fichier d’un plugin : c’est mal. :)
      Et à la prochaine mise à jour tes changements auront disparus.

      Tu dois surtout désactiver la fonctionnalité « styles en ligne » dans la page de configuration de Facteur. Il y a une case à cocher pour ça.

    • Oui, c’est vrai. Corrigé.
      Merci

    Répondre à ce message

  • 5

    Bonjour,

    Erreur bizarre :

    Impossible d’activer le plugin ../plugins/auto/formidable/v1.5.2
    Nécessite le plugin FACTEUR en version 3.0.3 minimum.

    Je suis sur une 3.0.11, mon Facteur est une 2.4.5 et ... sauf erreur de ma part, je ne vois nulle part de version 3.0.3 pour Facteur, il ne me propose d’ailleurs pas de mise à jour ... mystère !

    Pierre

    Répondre à ce message

  • 1

    Bonjour,

    Je suis entrain d’essayer spip 3 en local (LAMP/UBUNTU) j’ai installé newsletters pour le tester sauf que je ne sais pas comment configurer facteur en local pour simuler des inscriptions. Comment faire svp ? Merci.

    • Faut configurer le SMTP, comme dans ton client mail, si tu n’utilises pas qu’un webmail. Genre smtp.free.fr, etc. Faut chercher la doc chez ton fournisseur de mail.

    Répondre à ce message

  • 4

    Re-bonjour,

    Avant passage en spip 3, j’utilisais spiplist et je pouvais abonner directement un rédacteur à ma liste d’envoi depuis sa fiche en espace privé.

    Maintenant j’utilise Facteur avec un spip 3. Il n’est plus possible d’abonner ou désabonner un rédacteur directement à partir de sa page de l’espace privé.
    Je suis obligé de chercher son adresse mail dans la liste « inscrits aux envois ».

    Est-ce que mal cherché comment faire ? Sinon c’est un peu fastidieux sachant que je n’envoie cette Newsletter qu’aux rédacteurs.

    Merci.
    Benoît

    • Euh tu ne peux pas utiliser maintenant Facteur à la place d’anciennement Spiplist : ces deux pugins n’ont aucun rapport.

    • Merci RastaPopoulos,

      J’ai récupéré les listes d’envoi aux rédacteurs de Spiplist dans Newsletter. De là, j’envoie mes lettres via Facteur et le SMTP de Mailjet.
      Ca fonctionne sauf sur 2 points :
      -  les messages de notifications (abo désabo sur mal liste) sont tronqués (hrml incomplet)
      -  je ne peux plus sélectionner ou modifier un abonnement directement à partir de la fiche du rédacteur.

      Voilà ce qui coince un peu pour le moment
      une idée ?
      Benoît

    • Je ne vois toujours pas le rapport : tu ne peux absolument pas « envoyer tes lettres » ou « sélectionner un abonnement » avec Facteur, puisqu’il n’y a PAS d’interface. Ce n’est pas un plugin avec une fonctionnalité pour les utilisateurs, c’est un plugin outil pour développeur, fournissant uniquement une API pour envoyer mieux les mails (et juste un form pour configurer le SMTP).

      Si tu as une question sur le plugin Newsletter, ben... tu poses la question sur le forum du plugin en question. :D

    • ouaip, en effet je crois que je cafouille un peu, désolé RastaPopoulos.
      En fait j’utilise Newsletter (pour mes listes) avec Facteur pour le réglage SMTP mais aussi le plugin Mailjet/spip qui s’occupe aussi du réglage SMTP ..
      sans doute que ces 2 derniers font doublons ..
      Je vais poster sur le forum de Newsletter
      Benoît

    Répondre à ce message

  • 4

    Bonjour,

    Sur SPIP3, depuis l’installation de facteur, les mails de confirmation sont passé en mode HTML. Je souahite ajouter du code HTML (des images), mais je ne trouve pas dans quel répertoire se trouve le squelette du mail envoyé.

    Je peux bien sûr modifier le texte dans le fichier de lang de la pétition, mais je ne peux pas mettre de code HTMl dedans, il est filtré.

    Donc il me faudrait avoir accès au squelette qu’utilise facteur... Où diable se cache-t-il ?

    Merci de votre aide,

    Julien

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

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