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
Discussions par date d’activité
144 discussions
Bonjour,
J’utilise le plugin formidable et donc le plugin facteur pour un formulaire de demande de réservation. Dans ce formulaire j’ai donc une date d’arrivée et un date de fin. L’ formulaire marche bien mais le mail reçu ne contient pas les dates entrées dans le formulaire. Il en est de même dans les consultations par l’espace privé.
Je ne sais pas d’ou ca vient mais ca me pose des soucis donc si quelqu’un a une idée, je suis preneur.
Merci beaucoup de votre travail.
Aucun rapport avec Facteur puisque c’est pareil dans l’espace privé. Mais tout est à jour sinon ? Le plugin Saisies notamment, qui contient la vues du résultat d’une date. Ce bug a déjà été reporté et a été corrigé normalement.
Merci, ca venait bien de saisies qui n’était pas à jour... J’ai pas pensé à regarder car je l’ai installé il y a peu de temps...
Merci encore et bravo pour tout le boulot des développeurs
Répondre à ce message
Bonjour,
Est-ce qu’il serait possible de personnaliser également le préfixe de l’objet dans « Personnaliser ces réglages » qui est par défaut [nom du site], ce qui serait très utile lorsque le nom du site est trop grand ?
Merci par avance :-)
jorge
Ben ça ça n’a pas de rapport avec Facteur à priori, qui fournit essentiellement la fonction améliorée pour envoyer des mails. Ce sont SPIP et les plugins qui utilisent cette fonction et qui définissent le sujet du mail (deuxième argument de la fonction).
Répondre à ce message
Bonjour !
Après l’installation de « Facteur » le site n’envoie plus de notifications.
L’envoi d’un email test depuis la page Facteur en laissant les options par défaut (PHP), affiche « erreur » et aussi (bizarrement en anglais, bien que j’utilise l’interface en français) :
"Invalid address : paolo2@taize.frYou must provide at least one recipient email address."
Est-ce que quelqu’un a des idées ?
merci !
Bonjour,
Peut on utiliser smtp avec gmail je rempli tout bien pourtant aucun mail d’envoyé et le test échoue ...
Cela me mets :
SMTP Error : Could not connect to SMTP host.
Pour info :
Serveur de courrier sortant (SMTP) - TLS nécessaire : smtp.gmail.com(utiliser l’authentification)
Utiliser l’authentification : Oui
Connexion STARTTLS : Oui (appelée SSL par certains clients)
Port : 465 ou 587
Nom du compte : votre nom d’utilisateur Gmail (« @gmail.com » compris)
Adresse e-mail : votre adresse e-mail Gmail complète (nomutilisateur@gmail.com).
Mot de passe : Votre mot de passe Gmail
J’ai besoin d’aide, j’ai tout inscrit correctement comme ce qui est dit de faire ...
Cela vient de spip qui gère mal le smtp ou non ?
Merci d’avance pour ceux qui m’aideront
Je recommence en mettant toutes les bonnes informations.
Je suis en local sous WampServer, mon but est d’envoyer des mails à partir de spip d’où le plugin facteur.
Dans la configuration du plugin facteur =>configuration du mailer
Utiliser smtp
Hôte : smtp.gmail.com
Port : 465
Requiert une authentification : j’ai mi Oui
Nom d’utilisateur : adressemail@gmail.com
Mot de passe : monmotdepasse
Connexion sécurisée : ssl
Un fois ces champs correctement renseigné :
Je clique sur « tester » dans « Tester la configuration » et cela me mets :
SMTP Error : Could not connect to SMTP host.
Sinon quand je choisi « Utiliser la fonction mail de PHP » et que je refais tester cela me mets :
Could not instantiate mail function.
Je ne comprends vraiment pas pourquoi cela ne marche pas.
Si quelqu’un pourrait m’aider rapidement cela serait fort aimable.
Merci
Je n’ai moi-même jamais eu de compte Gmail, donc je n’ai aucune idée de la réponse. Il faudrait déjà trouver des gens avec un compte Gmail pour tester, pour savoir s’ils arrivent à utiliser le SMTP de Google...
Salut RastaPopoulos !
Et auras-tu une idée comment je peux recevoir (en envoi PHP) l’erreur « You must provide at least one recipient email address. » quand j’ai bien inséré une adresse ?
merci, P.
Ça fait cette erreur où ? Dans le test fourni dans la page de config ?
Le seul endroit où ça appelle cette erreur c’est avec ce code :
S’il n’y a donc aucune adresse, pour aucun des trois champs de destinataires d’un mail.
Ça fait l’erreur avec n’importe quel destinataire ?
Oui. Quand je clique sur « Tester » sur la page .../ecrire/ ?exec=facteur
J’en ai testé 3. Et aussi essayé de laisser « Utiliser les réglages du site SPIP » Toujours le même résultat.
Sans Facteur installé, le site renvoie des notifications par email sans problème. Un formulaire CVT qui envoie des résultats par email marche sans Facteur, mais lorsque le plugin est installé le formulaire ne fonctionne plus.
Je suppose donc qu’il s’agit d’un problème avec le surcharge de la fonction envoyer_mail. Mais je suis assez perdu pour savoir comment faire paraître le fond du problème.
(Il s’agit d’un site test auquel je peux donner accès si on le veut.)
Oui il va peut-être falloir que je vois en direct, mais il faudrait surtout pouvoir tracer dans
classes/facteur.php
etphpmailer-php5/class.phpmailer.php
à différents endroits, le contenu des variables qui contiennent les destinataires.Je t’envoie des logins admin SPIP et ftp par email.
Comme ça tu pourras regarder quand et si tu as le temps.
Alors première approche : avant l’erreur que tu indiques, il y a d’abord une autre erreur qui est
Invalid address: ladresse@choisie.fr
et ce, quelque soit l’adresse définie.Donc la deuxième est sûrement une conséquence de la première.
RastaPopoulos : Dans ce cas là dis moi une adresse qui marche avec les divers paramètres ... et je créerais à partir de cette adresse
Merci
Répondre à ce message
Bonjour,
j’utilise Spip 2.1.10 et le plugin Facteur 1.6.2.
Mon problème est le suivant :
lorsque je fais des tests d’envoi depuis mon serveur local en gardant la configuration de base (envoi par fonction mail), le test est réussi et je reçois bien le mail.
Même manipulation, même configuration sur un serveur distant, et là je reçois le message mais sans le sujet du mail et le nom de l’expéditeur (email@xxxxxxx.org au lieu de Nom Prénom en local).
Lorsque je configure l’envoi par Smtp (Online), le test ne fonctionne pas (erreur : Warning : fsockopen() [function.fsockopen] : Forbidden port in class.smtp.php on line 122).
Je suis dans une impasse pour le moment...quelqu’un a-t’il déjà été confronté au pb et a-t’il su le résoudre ?
Ok voici un lien décrivant la solution en restant en configuration standard (fonction mail) : Solution si absence de sujet dans le mail envoyé via plugin Facteur
Répondre à ce message
Hello
Je viens de me rendre compte que le champ nom (quand on personnalise l’adresse d’envoi) ne s’affiche pas dans mon lecteur de mail à réception d’un courrier. Effectivement dans prive_facteur.log j’ai :
From : yffic@xxxxxxxx.com
alors que si je regarde le code, je devrais avoir
From : le nom saisi
Y’a un bug quelquepart ou bien ?
Je ne constate pas ce problème mais apparament tu n’es pas le seul à le constater - cf LN sur spip-zone -
Salut
Quand tu dis « e ne constate pas ce problème », comment testes-tu ?
D’après ce que je viens de constater dans le code, ca ne fonctionne qu’en faisant le test d’envoi depuis facteur... Pas avec spip-lettres : http://thread.gmane.org/gmane.comp.web.spip.zone/23258/focus=23338
nonon... mais ça devrait être réglé maintenant en tout cas.
Répondre à ce message
Bonjour,
Pensez-vous qu’il soit possible d’ajouter la possibilité d’un envoi systématique d’une copie des emails (cc ou bcc) vers une adresse type (ou celle du site par défaut).
Je pense au plugin facteur car c’est le « passage obligé » des envois d’emails (quand il est utilisé bien sûr).
J’ai pensé aussi au plugin notifications, mais il est moins centralisateur.
Qu’en pensez-vous ? Est-ce une bonne idée ?
En avez-vous d’autres ? Un plugin spécifique ? Une autre possibilité technique du « framework » SPIP ?
J’ai ce besoin sur un site car les auteurs et contributeurs y sont nombreux, éparses et parfois... de passage fugace.
Cela permettrait de s’assurer que les questions et commentaires posés sur les articles ne restent pas sans réponse.
A+
Luc
Ça convient ça ? :
http://zone.spip.org/trac/spip-zone/changeset/43746
Je viens de l’ajouter, dites moi si ça convient.
Super merci.
Je vais exploiter ce pipeline.
ET je vous fais un retour.
Dans « quelques » jours parce que là j’ai une AG d’assos à préparer...
C’est fait.
Ca marche en local pour moi.
Sur mon site, je manque encore de recul.
J’ai « pluginisé » le résultat : http://zone.spip.org/trac/spip-zone/browser/_plugins_/facteurcopie.
Un premier jet, fonctionnel je pense.
Cela fait pas mal de premières pour moi.
J’accueillerait vos réflexions avec intérêt.
visiblement ç’a été intégré dans facteur en fait.
Effectivement. Après échanges avec Rastapopoulos et Matthieu, je l’ai intégré directement dans facteur. J’ai tremblé un peu, mais c’était le plus rationnel.
Répondre à ce message
Bonjour,
J’essaie d’utiliser le plugin facteur mais ça ne marche pas. Lorsque je suis dans cfg pour configurer facteur, je fais le test pour vérifier un mail test et il s’affiche le message « erreur » en haut de la fenêtre. D’où cela peut-il venir s’il vous plaît ?
Merci par avance
Et habituellement les mails par PHP fonctionnent ? Et quelle est la configuration dans le Facteur : utiliser la fonction mail() de PHP ou bien un serveur SMTP ?
J’ai mis configuration en serveur smtp car ça semble plus simple ? est-ce qpour ça que ça ne marche pas ?
Si le serveur SMTP existe et que tu as mis les bons identifiants, c’est censé marché évidemment. Après certains SMTP n’acceptent d’être utilisés que depuis la connexion du fournisseur, par exemple quand c’est le SMTP d’un FAI c’est souvent seulement quand on est connecté depuis un box à lui qu’on peut utiliser son SMTP. Bref c’est au cas par cas et évidement faut mettre les bons identifiants/mot de passe.
Merci pour tes réponses mais j’ai encore une question.
Est-ce que ça peut venir du fait que je travail en local avec wampserver pour le moment ?
Merci encore pour tes réponses
Si on travaille en local avec une connexion internet active et qu’on a configuré un SMTP qui marche, et bien c’est censé marcher puisqu’on utilise pas la machine locale pour envoyer les mails mais on fait appel à un serveur externe.
C’est peut-être une question bête, mais qu’est ce que ça signifie de « configurer un SMTP » car quand je suis dans le plugin facteur et que je coche la case SMTP il n’y a pas d’options possibles. Que dois-je faire ?
Vous mentez monsieur ! :)
Quand on choisit SMTP, il y a non pas un, ni deux mais SIX nouveaux champs qui apparaissent où l’on peut donner l’adresse du serveur, le port, les identifiants, etc.
Désolé je me suis trompé. En fait au départ j’ai essayé en cochant « PHP » et ça n’a pas marché. Ensuite j’ai essayé avec « SMTP » et ça n’a pas marché non plus. Je sui sur Gmail et j’ai complété les champs de la façon suivante à partir de ce que j’ai trouvé sur le net :
Serveur courrier sortant (SMTP) Server – TLS requis : smtp.gmail.com (utilise l’authentification)
Utilisation de l’authentification : OUI
Utilisation SSL : OUI
Port : 465 ou 587
Nom du compte : votre nom Gmail (inclure ’@gmail.com’)
Addresse email : votre adresse email complète (toto@gmail.com)
Mot de passe : votre mot de passe
Malgré ça rien ne marche. As-tu une idée ou dois-je laisser tomber ? ;)
Salut,
le bon réglage c’est le port 465 et ’SSL’ comme type de connexion sécurisée.
Sinon il faut aussi que mod_ssl soit installé sur ton serveur, et que celui-ci ne soit pas black-listé. Tu es en quel environnement : dédié, mutualisé ? Chez quel hébergeur ?
++
.Gilles
Répondre à ce message
PS Ou bien l’ajouter dans ?exec=facteur en haut de de la page ?
Bon week-end
Répondre à ce message
Salut,
Y a-t-il un moyen d’envoyer un mail à deux destinataires en même temps (genre « adresse1@site.com , adresse2@site.com ») ??
J’ai testé pour le plugin Tipafriend et les mails ne partent jamais (pas d’info particulière dans le log de Facteur) ...
Merci ;-)
Pour envoyer à plusieurs personne : soit avec une chaine séparée par des virgules comme tu l’as indiqué, soit avec un array PHP avec une adresse par case.
Pour Tipafriend : jecépajeconépa. :)
Bonjour et Bravo Rasta,
Je rajoute deux suggestions, car je viens de mettre a jour un site en 2.1.8 et M@J auto avec CS et une demi-douzaine de plugins (dont facteur) :
1°/ est-il possible de documenter la possibilité de multiples adresses mail, séparées par des virgules, comme précisé ? est-il aussi imaginable de pré-paramétrer une BCC systématique comme dans Thunderbird (l’equivalent d’un _DEFINE ) à saisir dans facter_cfg ?
2°/ à la mise a jour, je spécifie une adresse mail dans ?exec=facteur, j’ai bien sur testé (bien invité par le plugin) et j’ai eu une erreur !
a la réflexion, j’ai controlé qu’il y avait une adresse mail dans / ?exec=configuration => il n’y en avait pas !!! d’ou sans doute la cause de l’erreur !
j’en remets la meme, et envoi OK
- serait-il possible d’améliorer le bandeau « tester » pour y afficher explicitement la/les adresses mails qui vont etre utilisées...
- est-il obligatoire ou facultatif d’avoir un mail ET dans ?exec=configuration ET dans ?exec=facteur ?
Mes deux sous, au royaume du soleil !!
YannX
Répondre à ce message
Bonjour,
Je viens de mettre à jour mon spip (de 2.0.1 à 2.1.2) et j’ai installé Facteur avec succès. Mais quand je veux le configurer, un message m’indique « Fichier configurer_facteur introuvable ». Pourtant, il est bel et bien dans le rép (facteur/prive).
Merci de me dire ce qui cloche.
J’ai le même problème et c’est quoi l’adresse IP du serveur SMTP de 1and1 stp ?
Essaie çà : auth.smtp.1and1.fr
avec le port 587 au lieu de 25.
J’ai eu le même message d’erreur que toi, j’ai donc abandonné provisoirement. Je surveille malgré tout ces échanges.Tu me diras si tu as réussi, et comment ;-)
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 :
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.
Suivre les commentaires : |