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 :
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
Discussions by date of activity
131 discussions
Bonjour,
Sous spip 4.0.6, php 7.4.18 et Facteur 5.0.3 en lien avec Maishot 3.0.7 et MailSubscribers 3.0.8.
J’utilise le lien smtp MAILJET.
Si c’est prévus quelle est l’adresse locale que je dois déclarer pour les échanges des Webhooks de mailjet ?.
J’ai créé les dossiers /mailshot_webhook.api/mailjet/ au même niveau que Spip et conforme à l’adresse proposée par mailjet. Je n’ai rien en retour dans ces dossiers.
Merci bien
Alain BOURDEAU
Je n’ai rien compris à ce que tu essayes de faire. Il n’y a strictement aucun “dossier” à créer (pourquoi des dossiers ? de quoi ?). Ya juste à configurer des choses dans l’interface quoi, les clés d’API fournies par le service choisi (ici mailjet donc).
C’est tout simplement savoir comment utiliser ce qui est proposé par Mailjet (voir la capture d’écran suivante).
J’ai néanmoins les notifications par courriel des désinscriptions ou des inscriptions.
Merci bien
En complément, ne plus avoir ce type de message de Mailjet :
Webhook failure
It seems one of your webhook is unresponsive and fails to process the events we are pushing.
API key: xxxxxxx
Webhook endpoint: https://choeurcrescendo.fr/mailshot_webhook.api/mailjet/
Please resolve the issue with this webhook before 2022-05-20 14:35 UTC. After this date, we will stop sending events to your webhook.
If you have any questions, please contact our Support Team.
Sincerely,
The Mailjet team
This email was sent to you by Mailjet because you signed up for a Mailjet account. Please let us know if you feel that this email was sent to you by error.
Mais ça n’a pas de rapport avec Facteur. Faut juste configurer dans la config de avec ce qui est demandé, les clés d’API quoi. Mais pour Mailshot c’est propre à sa config donc, dans son peanneau de config (et dans son forum si ya un problème).
Mais t’as bien le .htacess fourni par SPIP ? Sinon les URL d’API peuvent pas marcher… (toutes les URL spip/truc.api/etc)
Merci bien,
Justement, je ne l’avais pas activé !!!
Je viens de le faire, y a plus qu’a voir si “c’est mieux”, ce dont je ne doute pas puisque tes conseils techniques sont rarement pris en défaut.
Amicalement Alain BOURDEAU
Reply to this message
Bonjour,
Avec les services pro d’OVH, la connexion SMTP doit suivre le protocole STARTTLS.
Or, facteur ne propose pas ce mode :(
Tout ce que facteur affiche lorsqu’on tente un test, c’est :
Est-ce que c’est une erreur de paramétrage de notre côté, ou une limitation de facteur insurmontable ?
starttls c’est tls, mais plus souple, avec un démarrage en clair non chiffré, donc à priori la lib sait forcément le gérer… mais j’avoue que suivant les serveurs et les combinaisons de mode, ports, etc des fois c’est le tatonnage pour trouver.
Reply to this message
Bonjour à tous,
Le plugin fonctionne bien, j’ai associé à un compte gmail pour l’envoi
Seulement je recois toujours ce message d’erreur dans les mails envoyés:
Erreur d’exécution plugins/auto/facteur-2c4f9-v4.1.1/emails/texte.html
Quelqu’un saurait il me dire ce qui ne va pas ? Je suis sous Spip 4.0.0 et facteur 4.1.1
Reply to this message
Bonsoir,
Je n’arrive pas à configurer le plugin Facteur pour une boite mail yahoo.
j’ai testé plein de réglages différent sans succès.
À noté que si je regarde les réglage smtp sous thunderbird la méthode d’authentification est “OAuth2” et là je ne vois pas où entrer cela dans le plugin.
Une idée?
Merci d’avance,
Cordialement,
Hervé
Tu as peut-être ce post précédent qui peut répondre à ta question: https://contrib.spip.net/Facteur#comment499069
Reply to this message
Bonjour,
J’essaie de configurer ce plugin pour des envois de courriels authentifiés, depuis un serveur smtp externe.
J’ai coché et renseigné les options suivantes:
Lorsque je teste la configuration, je reçois bien le courriel.
Cependant, dans l’en-tête du courriel que je reçois, je ne trouve pas d’en-tête DKIM et j’ai “Agent utilisateur” à “PHPMailer 6.1.3 (https://github.com/PHPMailer/PHPMailer)”.
Sans l’en-tête DKIM, les grand·e·s méchant·e·s du mail vont évidemment mettre ça dans les spams dans le meilleur des cas, voir, ne pas délivrer le courriel et ne rien dire. C’est fâcheux. ;-)
Est-ce que j’ai oublié quelque chose?
Je précise qu’en utilisant mon courriel via le webmail ou bien un autre client, j’obtiens bien l’en-tête DKIM.
Bonsoir,
Tu as testé https://www.mail-tester.com/ pour aider à la configuration ?
Il doit manquer dans les dns du domaine l’ip du serveur smtp qui envoi afin de l’authentifier.
J’avais testé avec mail tester.
En gros, l’envoi via facteur (avec l’option smtp) obtient une note de 8.7/10, sans signature DKIM.
Si je reteste depuis le webmail de l’hébergeur, j’obtiens la note 10/10, avec la signature DKIM.
Ça me donne vraiment l’impression que facteur n’utilise pas vraiment l’authentification smtp pour l’envoi de mes courriels depuis le site.
et smtp de l’ hébergeur ou un autre smtp ?
Oui. Pour avoir la bonne signature DKIM dans l’en-tête de mes courriels provenant du site, j’essaie bien sûre d’utiliser le smtp de mon hébergeur.
Reply to this message
Bonjour,
le plugin facteur existe-t-il pour formidable avec spip 4.0 ?
Il manquait un tag sur la dernière version marquée pour SPIP 4 afin que ça génère le paquet ZIP pour le commun des mortels. C’est fait, ça va arriver dans les heures qui suivent.
Reply to this message
Bonjour,
Pour mettre à jour phpmailer, il suffit de remplacer la lib ?
Je suis aussi intéressé par la question dans la mesure ou une alerte de sécurité sur la librairie a été publiée dernièrement.
Merci.
Il faut remplacer la lib et possiblement les chemins dans les utilisations si le nom de dossier a changé. S’il y a eu des mises à jour récemment oui faut proposer une mise à jour, si quelqu’un se sent de faire une PR sur le projet Git. Dans tous les cas ce serait mieux de faire un ticket qu’ici où c’est pour du support à l’utilisation.
https://git.spip.net/spip-contrib-extensions/facteur/issues
Reply to this message
Je reviens avec une petite question concernant le paramétrage de ce plugin : est-il possible d’imposer un paramétrage par fichier ?
En effet, le même paramétrage de SMTP doit être utilisé pour toute une série de sites : déployer le plugin avec sa configuration dans /config serait un gros + !
C’est une fonctionnalité qui ne serait pas propre à ce plugin, et non ça n’existe pas, SPIP ne permet pas ça.
En revanche il y a peut-être pour toi le plugin “Import/Export de configuration”, qui permet d’enregistrer une série de configuration dans un fichier (yaml je crois) qu’on peut alors importer dans d’autres sites, sans avoir à recocher ou remplir tous ces champs (mais il faut quand même faire l’opération d’importer). Ça me fait penser que ce plugin (import/export) pourrait avoir des commandes SPIP-Cli pour faire ça sans avoir besoin d’aller dans l’admin de chacun des sites.
(J’ai fait un ticket tiens du coup https://git.spip.net/spip-contrib-extensions/ieconfig/issues/1)
Merci pour ce retour !
Je vais tester ce plugin d’import/export de config ;-)
Reply to this message
Je souhaite légèrement surcharger le template emails/texte.html dans un plugin dédié pour l’envoi des mails automatiques (interactivité).
Mais en recopiant la même arborescence (plugins/mon-plugin-email/emails/texte.html) ce template n’est pas pris en charge : quelle(s) action(s) faut-il effectuer en plus ?
Ton plugin doit absolument nécessiter ou utiliser (dans son xml) le plugin à surcharger, pour être sûr de passer après, par dessus.
C’est bien cela :
<necessite nom="Facteur" compatibilite='[4.1.0;]' />
Merci beaucoup !
Reply to this message
Bonjour,
J’aurais bien aimer pouvoir utiliser Oauth pour se connecter avec le compte gmail pour simplifier la connexion au serveur SMTP mais cela ne semble pas possible.
J’ai vu dans le code des traces d’authentification Oauth mais ça ne me semble pas opérationnel en l’état.
Est ce qu’il y a moyen d’activer cela?
Merci pour vos réponses
Non ce n’est pas prévu. Je ne savais même pas qu’on pouvait se connecter à un serveur SMTP par OAuth. Mais OAuth c’est pour faire de la délégation, pour le cas de la config de Facteur, en quoi ça simplifie par rapport à mettre le login pass du serveur SMTP ?
Reply to this message
Add a comment
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.
Follow the comments:
|
