Dans le core de spip la fonction envoyer_mail() pourrait être du genre :
function inc_envoyer_mail_dist($email, $modele, $from = "", $headers = "")
$modele étant le nom de la notification à envoyer
Il ne faut pas casser la compatibilité avec l'existant ...
Comment enrichir l'api d'envoyer_mail sans casser un peu ? ^^
Sans vouloir vous faire hurler, je pensais à une modification des fonctions du core de spip.
Un exemple :
$envoyer_mail = charger_fonction('envoyer_mail','inc');
$envoyer_mail($GLOBALS['meta']['email_webmaster'], "erreur forum ($type)", "erreur sur le forum ($type) :\n\n");
Deviendrait :
$envoyer_mail = charger_fonction('envoyer_mail','inc');
$envoyer_mail($GLOBALS['meta']['email_webmaster'], "erreur_forum", $args=array('type'=>$type));
On aurait un fichier/tableau du core centralisant tous les corps des mails à envoyer :
$tableau_des_mails['erreur_forum'] = "erreur sur le forum (".$args['type'].") :\n\n";
Ca ne me semble pas une manoeuvre si périlleuse si ?
Quel interet de passer par un squelette pour l'objet du mail ?
C'est vrai que ça reste anecdotique mais du retour d'expérience de spip-boutique par exemple, où on a beaucoup de mail à personnaliser, ça permet de créer des noisettes contenant le nom du client, favorisant la réception du mail niveau spam. Ca permet de donner la main au développeur sur tout ce qui concerne les notifications. Il y a toujours quelqu'un pour qui les intitulés ne sont pas satisfaisants, pas seulement le texte...
recuperer_fond('notifications/inscription_site_spip_html'); // pour la version html
recuperer_fond('notifications/inscription_site_spip_texte'); // pour la version texte
oui il est bien de pouvoir faire cela, mais il faut aussi pouvoir envoyer un simple email texte, ou un email html sans squelette pour le format texte qui sera généra automatiquement à partir du html dans ce cas.
Exemple avec spip-notifications :
$titre = recuperer_fond('notifications/notification_test_titre', array());
$message_html = recuperer_fond('notifications/notification_test_html', array());
$message_texte = recuperer_fond('notifications/notification_test_texte', array());
$test = new Notification($destinataire, $titre, $message_html, $message_texte);
Si la version html est vide le message est envoyé en version texte seulement. C'est beaucoup plus pratique de formater un mail via un squelette qu'en php.
puis envoyer via smtp ou pas, en appliquant des filtres ou pas
des filtres sur quoi ?
Pour embarquer les images référencées dans les notifications, transformer les styles placés dans head en styles en ligne, ou convertir de utf-8 vers iso-8859. En gros des filtres qui permettent d'assurer la bonne livraison des notifications.
Pierre