[PluXml 5.8] Envoi de mel par smtp
cpalo
Member
Bonjour,
Dans configuration avancée il y a l'option envoi de mel par smtp.
Si on la sélectionne c'est pour permettre l'utilisation de certains plugins, ou bien il y a une option native de pluxml pour l'envoi de mail?
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Bonjour,
PluXml 5.8, permettra nativement d'envoyer des mails via un serveur SMTP, grâce à la librairie PHPMailer et une nouvelle fonction $plxUtils->sendMailPhpMailer(). Cette nouveauté a été intégrée avec la réinitialisation de mot de passe, qui est désormais possible au travers de l'envoi d'un e-mail à l'utilisateur.
Et cette version 5.8 va gérer oauth2 pour les comptes en @gmail.com ?
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
C'est possible de l'intégrer à PluXml, puisque PHPMailer permet de gérer oauth2, mais il y a tellement de dépendances à intégrer avec composer, que je ne souhaite pas ça pour PluXml, du moins pour l'instant. En revanche, ça pourrait faire l'objet d'un plugin.
Cela veut dire que si je fais un formulaire de contact (au lieu d'utiliser un des plugins existant) je pourrai utiliser phpMailer sans installer la librairie nécessaire mais en faisant appel dans mon formulaire à cette nouvelle fonction?
Oui c'est possible. Tu peux prendre l'exemple de la fonction : $plxAdmin->sendLostPasswordEmail() qui fait appel à $plxUtils->sendMailPhpMailer(). Cependant, la class plxUtils n’accédant pas à la configuration du site, il faut d'abord récupérer les éléments nécessaires de configuration avant des les envoyer à $plxUtils->sendMailPhpMailer().
Exemple :
En réalité c'était déjà possible avant la version 5.8, puisque la fonction $plxUtils->sendMail() permet déjà d'envoyer des e-mails, c'est d'ailleurs elle qui est utilisé par plusieurs plugins, et c'est pour cela qu'elle est conservée.
Cependant, $plxUtils->sendMail() ne permet d'envoyer des e-mails qu'au travers du mailer installé localement sur la machine qui héberge le site (par exemple : exim4). La nouvelle fonction $plxUtils->sendMailPhpMailer(), permet également cela, mais apporte en plus l'envoi d'e-mails au travers d'un serveur SMTP.
Bon, j'ai écrit le plugin et il fonctionne avec OAuth2 pour un compte GMail.
Mais avant d'utiliser le plugin, il faut aller sur le site de Google pour obtenir des clés secrête et publique. Puis lancer en local une page PHP pour obtenir un jeton d'accès provisoire au compte GMail. C'est loin d'être évident au premier abord. Et pour finir de décourager les plus timides, c'est en anglais.
Une méthode plus simple est d'activer l'authentification en 2 étapes sur le compte Google. Si vous ne l'avez pas encore fait, c'est mal car le couple login/mot de passe n'offre plus une sécurité suffisante aujourd'hui.
Ensuite, il suffit de récupérer une chaîne de caractères à cette page et de l'utiliser comme mot de passe. le serveur stmp.gmail.com s'utilise simplement sur le port 587 et avec starttls comme sécurité pour les échanges avec le serveur.
Concernant les dépendances, elles se gèrent toutes seules avec l'outil composer. Le fichier composer.json pour mon plugin ressemble à ceci :
{
"name": "kazimentou/kz-phpmailer",
"description": "Addon for PluXml which integrates PHPMailer library",
"require": {
"phpmailer/phpmailer": "^6.1",
"league/oauth2-google": "^3.0"
},
"authors": [
{
"name": "bazooka07",
"email": "kazimentou@gmail.com"
}
]
}
Ce n'est pas compliqué !
Je trouve que la façon d'intégrer PHPMailer dans PluXml 5.8 très maladroite. Il faut créer un dossier séparé et utiliser composer. Et il n'y a aucune aide pour le débogage quand cela part en vrille et aucun moyen de tester la connexion.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
Je n'ai jamais dit que c'était compliqué... Mais je ne suis pas encore convaincu par le fait d'intégrer composer et toutes les dépendances de PhpMailer à PluXml, qui dans sa philosophie se veut être le plus simple et léger possible.
Ce n'est plus un fusil de chasse, c'est un char d’assaut ;-)
Néanmoins, utiliser composer (et oauth2) dans PluXml, ça peut apporter d'autres perspectives d'évolutions, alors pourquoi pas...
Il faut considérer le poids des dossiers dans vendor :
jpierre@smartteck:/home/www/test/PluXml-2017/plugins/kzPHPMailer$ du -sh vendor/*
4,0K vendor/autoload.php
68K vendor/composer
812K vendor/guzzlehttp
308K vendor/league
56K vendor/paragonie
516K vendor/phpmailer
92K vendor/psr
28K vendor/ralouphie
phpmailer pèse 516K. L'utilisation de composer ajoute les dossiers autoload.php et composer soit 4+68k
Tout le reste est amené par OAuth2. Qui n'est pas spécifique à Google. Voir les services utilisant OAuth2.
Accès à mon dépôt de plugins et thèmes
installe PluXml plus vite que ton ombre avec kzInstall2
J'ai revu l'intégration de PHPMailer en utilisant Composer, ce qui m'a permis d'ajouter à PluXml 5.8, la possibilité d'envoyer des e-mails à partir d'un compte SMTP OAUTH2. Pour le moment seul Google Cloud (Gmail) est géré et tout se paramètre via l'administration (Configuration avancée). Je prévoi de créer une page sur le wiki, pour expliquer comment créer et ajouter à PluXml un compte OAUTH2.
Comme d'habitude, c'est disponible sur la branche develop : https://github.com/pluxml/PluXml/tree/develop