L'ancienne classe Facteur est branchee sur FacteurSMTP qui se degrade en FacteurMail si pas de SMTP configure, pour assurer une continuite fonctionnelle des plugins qui utilisaient la classe Facteur directement
on ne fait pas d'upgrade de base, on gere la lecture de la nouvelle config et le fallback vers l'ancienne sinon via la fonction facteur_config_mailer()
- changer l'adresse d'envoi si domaine différent de celle du webmestre
- et, si on change l'adresse d'envoi, changer aussi le nom de
l'expediteur
Le premier point permet de fonctionner avec des serveurs SMTP stricts,
qui vérifient le domaine.
Toutefois, on peut vouloir garder le nom expediteur, même si on change
l'adresse expeditrice (ce que fait, par ex, Formidable lorsqu'on ne
force pas le champ From).
Une nouvelle option permet cela.
+ un reglage supplementaire permet de forcer le From quand il n'est pas dans le meme domaine que le From de Facteur
dans ce cas le From passe en ReplyTo et le From configure est force. Permet aux mails des formulaire de contact de fonctionner meme avec un service smtp externe qui demande de valider les domaines sortant
si le champ n'est pas rempli, on prend l'adresse du webmestre
Il est indispensable de pouvoir renseigner ce champ, car des prestataires comme mailjet
imposent des adresses verifiees
fonction de log wrapper qui renvoit sur spip_log, a utiliser avec
define('_MAX_LOG',1000);
define('_FACTEUR_DEBUG_SMTP',1); // 1,2,3 ou 4
pour loger toutes les informations de PHPMailer
- on ajoute l'auto-detection des mails HTML dans envoyer_mail : si aucun Content-Type n'est fourni, et que le mail commence par un < finit par un > et contient bien un </html> on considère que c'est un mail HTML. Cette feature etait fournie pour les notifications uniquement (par inc/notifications) jusqu'ici
- on recupere la fonction de conversion HTML->Texte du plugin Newsletter, qui s'appuie sur MarkDownify
- si aucune alternative texte n'est fournie à un mail HTML, on génère automatiquement une alternative texte dans envoyer_mail()
A tester et stabiliser.
evolution : permettre de passer un tableau d'option en 4e arg de Facteur. Les options non fournies sont piochees dans la config du plugin, mais cela permet d'utiliser la classe avec ses propres reglages sans devoir hacker les meta
Passage en 2.3.0
- il casse les mails faits mains sur mesure (comme le wrapper html des emails texte du plugin) car incapable de gerer les @media
- il peut etre utile sur certains mails html simples
- il est a utiliser au cas par cas, et c'est le webmestre qui code son mail html qui peut le savoir, pas l'admin qui configure le site et utilise simplement
En consequence, le reglage disparait de la configuration et n'est plus pris en compte
Par compatibilite la methode ConvertirStylesEnligne de la classe Facteur reste disponible, mais tout son code est deporte dans le filtre facteur_convertir_styles_inline
que l'on appellera au cas par cas dans les squelettes HTML par un appel #FILTRE{facteur_convertir_styles_inline}
Ainsi on preserve son usage quand necessaire, sans plus risque de casser les emails HTML bien fichus
On incremente la version en 2.2.0 pour marquer la difference fonctionnelle
Redéfinir dans la classe Facteur, les fonctions Send, AddAttachment, AddReplyTo, AddBCC, AddCC, de la classe PhpMailer de cette façon :
public function Send() {
ob_start();
parent::Send();
$error = ob_get_contents();
ob_end_clean();
if( !empty($error) ) {
spip_log("Erreur Facteur->Send : $error",'facteur.err');
}
}
Avec une constante pour activer ce mode et rajouter au début du constructeur de Facteur :
if (defined('_FACTEUR_DEBUG_SMTP')) {
$this->SMTPDebug = _FACTEUR_DEBUG_SMTP ;
}
Ajouter la ligne qui suit dans mes_options.php permet donc de retrouver les erreurs dans le fichier facteur.err.log.
define('_FACTEUR_DEBUG_SMTP','5'); // Le niveau peut varier de 1 à 5, 5 affichant tout le dialogue lors de la connexion smtp avec le serveur
les mails texte bruts sont encapsulés dans un modele emails/texte permettant d'avoir un mail html dans une présentation un peu plus propre que le texte brut.
Il est possible de revenir aux mails texte bruts en definissant un modele emails/texte.html qui renvoie uniquement #ENV*{texte}
lien vers la bonne icone
modernisation du script d'upgrade
grostitre sur la page de configuration
ne pas inclure classes/facteur sur chaque calcul, les scripts qui ont besoin de mailer le font par cette inclusion
ou par inc/envoyer_mail