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.
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
Descriptions des options
Le tableau $corps des options se présente comme suit :
- '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 -
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 :
Exemples d’usages
- On pourra par exemple utiliser un squelette existant pour générer le message 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 :
- include_spip('classes/facteur');
- $texte = Facteur::html2text($html);
- Enfin, on pourra rassembler ces éléments dans le tableau avant de les envoyer :
- 'html' => $html,
- 'texte' => $texte,
- 'nom_envoyeur' => $nom_envoyeur
- );




Télécharger le plugin
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_envoiqui 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
En en désinstallant le CS ?
Les choses à faire avant de poser une question
# 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
# 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,
# Le 14 septembre 2011 à 10:46, par RastaPopoulos
En réponse à : Facteur
Je ne me souviens plus, mais si ce n’est pas le cas il faudrait le rajouter. :)
Faut vérifier dans le code.
# Le 14 septembre 2011 à 10:50, par RastaPopoulos
En réponse à : Facteur
Bon c’est pas dans le code mais PHPMailer a bien une méthode « AddReplyTo » donc ça doit pouvoir s’ajouter facilement.
# Le 14 septembre 2011 à 11:02, par RastaPopoulos
En réponse à : Facteur
Voilà : http://zone.spip.org/trac/spip-zone/changeset/51398
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.
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]) :
œà la place. Mon message est à priori en UTF-8.$envoyer_mail($destinataire,$sujet,$corps,$from);avec dans le champs
$fromune chaine du typenom <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.
# 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