[spip-dev] envoi de mail

Pour pouvoir envoyer des tonnes de mails (newsletter), j'ai créer une série d'outils pour Spip.
- Une machine à enlever le HTML, pour avoir une version texte presque jolie du mail HTML.
- Une class pour envoyer des mails. Pour l'instant :
  - gestion du SMTP et de la fonction mail de PHP, et il est facile de rajouter une nouvelle méthode d'envoi pour gérer l'authentification ou des problèmes particuliers
  - gestion envoi HTML + text avec conversion automatique.
Cette class est "à la Spip", avec des methodes en français avec des _, des commentaires phpdoc, et utilise spip_log et les métas pour ses paramètres par défaut.

Je vais rajouter la gestion des bounces (check d'un compte spécifique en pop3 via la crontab de Spip), et la gestion de "pile de mail" pour envoyer les mails par petit paquets sans faire exploser les quotas.

Ca interesse quelqu'un? c'est plutot du spip-lab, ou du spip-dev?

M.

Selon Mathieu Lecarme <mlecarme@linagora.com>:

Pour pouvoir envoyer des tonnes de mails (newsletter), j'ai créer une
série d'outils pour Spip.
- Une machine à enlever le HTML, pour avoir une version texte presque
jolie du mail HTML.
- Une class pour envoyer des mails. Pour l'instant :
  - gestion du SMTP et de la fonction mail de PHP, et il est facile de
rajouter une nouvelle méthode d'envoi pour gérer l'authentification ou
des problèmes particuliers
  - gestion envoi HTML + text avec conversion automatique.
Cette class est "à la Spip", avec des methodes en français avec des _,
des commentaires phpdoc, et utilise spip_log et les métas pour ses
paramètres par défaut.

Je vais rajouter la gestion des bounces (check d'un compte spécifique en
pop3 via la crontab de Spip), et la gestion de "pile de mail" pour
envoyer les mails par petit paquets sans faire exploser les quotas.

Ca interesse quelqu'un? c'est plutot du spip-lab, ou du spip-dev?

M.

Quelle est la différence (ou la complémentarité) avec le système de notification
d'Antoire -> http://lab.spip.net/spikini/SystemeDeNotifications ???

et ça : http://www.spip-contrib.net/ecrire/articles.php3?id_article=536 ça gère
une boite IMAP, si j'ai tout compris...

Amicalement,

Quelle est la différence (ou la complémentarité) avec le système de notification
d'Antoire -> http://lab.spip.net/spikini/SystemeDeNotifications ???

Antoine déclenche des événements, qui peut être un envoi de mail, un message jabber, n'importe quoi (le système étant ouvert).
La class que je propose s'occupe juste de la partie envoie de mail(abstraction de la technique d'envois, mail mixte HTML/texte, gestion des bounces), c'est donc complémentaire.

et ça : http://www.spip-contrib.net/ecrire/articles.php3?id_article=536 ça gère
une boite IMAP, si j'ai tout compris...

euh, le lien est bizzare, j'ai pas de comptes pour écrire.

Amicalement,

Cordialement,

M.

Mathieu Lecarme a écrit :

Pour pouvoir envoyer des tonnes de mails (newsletter), j'ai créer une série d'outils pour Spip.
- Une machine à enlever le HTML, pour avoir une version texte presque jolie du mail HTML.
- Une class pour envoyer des mails. Pour l'instant :
  - gestion du SMTP et de la fonction mail de PHP, et il est facile de rajouter une nouvelle méthode d'envoi pour gérer l'authentification ou des problèmes particuliers
  - gestion envoi HTML + text avec conversion automatique.
Cette class est "à la Spip", avec des methodes en français avec des _, des commentaires phpdoc, et utilise spip_log et les métas pour ses paramètres par défaut.

Je vais rajouter la gestion des bounces (check d'un compte spécifique en pop3 via la crontab de Spip), et la gestion de "pile de mail" pour envoyer les mails par petit paquets sans faire exploser les quotas.

Ca interesse quelqu'un? c'est plutot du spip-lab, ou du spip-dev?

J'ai déjà fait la plupart de ces trucs as tu vu ?

http://demo.bloog.net/rubrique.php3?id_rubrique=1

BoOz a écrit :

Mathieu Lecarme a écrit :

utilise [...] les métas

As tu réalisé un hack du sytème des métas de spip ? Comme tu en parlais une fois je crois ?

BoOz

BoOz a écrit :

Mathieu Lecarme a écrit :

Pour pouvoir envoyer des tonnes de mails (newsletter), j'ai créer une série d'outils pour Spip.
- Une machine à enlever le HTML, pour avoir une version texte presque jolie du mail HTML.
- Une class pour envoyer des mails. Pour l'instant :
- gestion du SMTP et de la fonction mail de PHP, et il est facile de rajouter une nouvelle méthode d'envoi pour gérer l'authentification ou des problèmes particuliers
- gestion envoi HTML + text avec conversion automatique.
Cette class est "à la Spip", avec des methodes en français avec des _, des commentaires phpdoc, et utilise spip_log et les métas pour ses paramètres par défaut.

Je vais rajouter la gestion des bounces (check d'un compte spécifique en pop3 via la crontab de Spip), et la gestion de "pile de mail" pour envoyer les mails par petit paquets sans faire exploser les quotas.

Ca interesse quelqu'un? c'est plutot du spip-lab, ou du spip-dev?
   
J'ai déjà fait la plupart de ces trucs as tu vu ?

http://demo.bloog.net/rubrique.php3?id_rubrique=1

Oui, je sais, je me suis inspiré de la partie conversion html vers texte, j'ai regardé les besoins listés sur le wiki du lab, les histoires de SMTP dans la liste (la routine SMTP est d'ailleurs basé sur un truc posté dans la liste) et pour le bounce, je regarde comment fait phplist.
La différence par rapport à la bloogletter, c'est que c'est une class autonome, avec vocation d'être utilisé dans les différentes parties de Spip. Et c'est tout à fait intégrable à la bloogletter, garder la carosserie et changer le moteur, quoi.

M.

BoOz a écrit :

BoOz a écrit :

Mathieu Lecarme a écrit :
   
utilise [...] les métas

As tu réalisé un hack du sytème des métas de spip ? Comme tu en parlais une fois je crois ?

Il n' y a pas de hack. Il y avait un bug dans le cache, il y est encore. Spip utilise un outil de bugreport genre bugzilla ou autre pour pouvoir paufiner la 1.8 finale?
Sinon, les fonctions lire_meta, ecrire_meta et ecrire_metas peuvent être utilisé facilement avec des métas en plus, non?

M.

Mathieu Lecarme a écrit :

BoOz a écrit :

Mathieu Lecarme a écrit :

- Une class pour envoyer des mails. Pour l'instant :
- gestion du SMTP et de la fonction mail de PHP, et il est facile de rajouter une nouvelle méthode d'envoi pour gérer l'authentification ou des problèmes particuliers
- gestion envoi HTML + text avec conversion automatique.
Cette class est "à la Spip", avec des methodes en français avec des _, des commentaires phpdoc, et utilise spip_log et les métas pour ses paramètres par défaut.

Je vais rajouter la gestion des bounces (check d'un compte spécifique en pop3 via la crontab de Spip)

, et la gestion de "pile de mail" pour

envoyer les mails par petit paquets sans faire exploser les quotas.

Pas la peine de trop te fatiguer, regarde ca aussi dans le code de la bloogletter...

Ca interesse quelqu'un? c'est plutot du spip-lab, ou du spip-dev?

Ca serait plutôt du ressort de la bloogletter c'est à dire d'une contribution en marge de SPIP.

Après de long débats sur cette liste à propos de la gestion des newsletter (cf archives), il a été convenu que SPIP n'envisagerai pas de gérer l'envoi des emails ou des newsletter.

En effet envoyer un email pour quelques personnes est assez différent d'envoyer des mails pour une grande base de contacts. Ce ne sont pas les mêmes exigences. Pour l'envoi sérieux de newsletter, il existe des systèmes dédiés très performants et dont c'est le boulot, il devient donc difficile de demander à spip de s'en méler et de suivre des développements.

La solution la plus générale est de laisser chacun utiliser la solution qui lui convient le mieux pour gérer les envois de ses emails.

Parmi ces solutions, il existe des contribs comme la bloogletter qui intègrent des système pour spip, et qui vont bien dans certains cas ;).

http://demo.bloog.net/rubrique.php3?id_rubrique=1

Oui, je sais, je me suis inspiré de la partie conversion html vers texte, j'ai regardé les besoins listés sur le wiki du lab, les histoires de SMTP dans la liste (la routine SMTP est d'ailleurs basé sur un truc posté dans la liste) et pour le bounce, je regarde comment fait phplist.

La gestion des bounces automatiques nécéssite un serveur de mail et beaucoup de taches pour pas grand chose AMHA...

La différence par rapport à la bloogletter, c'est que c'est une class autonome, avec vocation d'être utilisé dans les différentes parties de Spip.

Tu veux faire combien de parties pour envoyer des newsletters :slight_smile: ?

Et c'est tout à fait intégrable à la bloogletter, garder la

carosserie et changer le moteur, quoi.

Ah volontiers :)), as tu des codes à proposer toi aussi ?

@+

BoOz

, et la gestion de "pile de mail" pour

envoyer les mails par petit paquets sans faire exploser les quotas.
       
Pas la peine de trop te fatiguer, regarde ca aussi dans le code de la bloogletter...

ok. Je voudrais un code générique et pluggable, sans forcement une interface web. Un truc réutilisable, quoi.

Ca interesse quelqu'un? c'est plutot du spip-lab, ou du spip-dev?
       
Ca serait plutôt du ressort de la bloogletter c'est à dire d'une contribution en marge de SPIP.

Après de long débats sur cette liste à propos de la gestion des newsletter (cf archives), il a été convenu que SPIP n'envisagerai pas de gérer l'envoi des emails ou des newsletter.

http://lab.spip.net/spikini/EnvoiDeMails

En effet envoyer un email pour quelques personnes est assez différent d'envoyer des mails pour une grande base de contacts. Ce ne sont pas les mêmes exigences. Pour l'envoi sérieux de newsletter, il existe des systèmes dédiés très performants et dont c'est le boulot, il devient donc difficile de demander à spip de s'en méler et de suivre des développements.

Ce que je propose, c'est une brique "lego" pour envoyer des mails. Pas une newsletter, taches que la bloogletter(TM) effectue trés bien.

La solution la plus générale est de laisser chacun utiliser la solution qui lui convient le mieux pour gérer les envois de ses emails.

Parmi ces solutions, il existe des contribs comme la bloogletter qui intègrent des système pour spip, et qui vont bien dans certains cas ;).

http://demo.bloog.net/rubrique.php3?id_rubrique=1

Oui, je sais, je me suis inspiré de la partie conversion html vers texte, j'ai regardé les besoins listés sur le wiki du lab, les histoires de SMTP dans la liste (la routine SMTP est d'ailleurs basé sur un truc posté dans la liste) et pour le bounce, je regarde comment fait phplist.
   
La gestion des bounces automatiques nécéssite un serveur de mail et beaucoup de taches pour pas grand chose AMHA...

ce n'est pas trés dur d'avoir un compte pop, c'est souvent compris dans les offres serveurs, même les mutualisés.
La différence entre envoi multiple de mail et spam est fine. Je veux donc envoyer des mails valides tout complet pour passer les spamassassins et autres filtres, et aussi éviter de m'acharner sur un mail mort ou une boite pleine. C'est plus netiquette, de la même manière, la présence d'un mail en mode texte est indispensable me

La différence par rapport à la bloogletter, c'est que c'est une class autonome, avec vocation d'être utilisé dans les différentes parties de Spip.
   
Tu veux faire combien de parties pour envoyer des newsletters :slight_smile: ?

je veux juste envoyer des mails. Spip utilises deja le mail, non?

Et c'est tout à fait intégrable à la bloogletter, garder la

carosserie et changer le moteur, quoi.
   
Ah volontiers :)), as tu des codes à proposer toi aussi ?

Oui, mais je voulais d'abord savoir quelles etaient les suggestions, les besoins, les problèmes avant de balancer un truc tout à refaire.

M.

BoOz a écrit :

as tu des codes à proposer toi aussi ?

Mathieu Lecarme a écrit :

Oui, mais je voulais d'abord savoir quelles etaient les suggestions, les besoins, les problèmes avant de balancer un truc tout à refaire.

Ce que tu as listé toi même me semble être un très bon début :slight_smile:

> une brique "lego" pour envoyer des mails>
> la gestion de "pile de mail"
> un code générique et pluggable, sans forcement une
> interface web. Un truc réutilisable, quoi.
> tenir compte des besoins listés sur le wiki du lab, les histoires
> de SMTP dans la liste (la routine SMTP est d'ailleurs basé sur un truc
> posté dans la liste)
> envoyer des mails valides tout complet pour passer les
> spamassassins et autres filtres, et aussi éviter de m'acharner sur un
> mail mort ou une boite pleine.

BoOz

Ce que tu as listé toi même me semble être un très bon début :slight_smile:

> une brique "lego" pour envoyer des mails>
> la gestion de "pile de mail"
> un code générique et pluggable, sans forcement une
> interface web. Un truc réutilisable, quoi.
> tenir compte des besoins listés sur le wiki du lab, les histoires
> de SMTP dans la liste (la routine SMTP est d'ailleurs basé sur un truc
> posté dans la liste)
> envoyer des mails valides tout complet pour passer les
> spamassassins et autres filtres, et aussi éviter de m'acharner sur un
> mail mort ou une boite pleine.

la fonction html2texte :

Mathieu Lecarme wrote:

Ce que tu as listé toi même me semble être un très bon début :slight_smile:

une brique "lego" pour envoyer des mails>
la gestion de "pile de mail"
un code générique et pluggable, sans forcement une
interface web. Un truc réutilisable, quoi.
tenir compte des besoins listés sur le wiki du lab, les histoires
de SMTP dans la liste (la routine SMTP est d'ailleurs basé sur un
truc posté dans la liste)
envoyer des mails valides tout complet pour passer les
spamassassins et autres filtres, et aussi éviter de m'acharner sur
un mail mort ou une boite pleine.

la fonction html2texte :

De mon côté, pour www.tregouet.org (basé sur AGORA), j'utilise la fonction
suivante pour faire la Lettre au format texte.

function PyratprepareNLtexte($texte) {
// Remplace tous les liens
while (eregi("<a href=['\"]([^'\">]+)['\"][^>]*>([^<]+)</a>", $out, $regs))
{
  $cleanReg1 = ereg_replace("\\?", "\?", $regs[1]);
  $cleanReg1 = ereg_replace("\\+", "\+", $cleanReg1);
  $cleanReg2 = ereg_replace("\\?", "\?", $regs[2]);
  $cleanReg2 = ereg_replace("\\+", "\+", $cleanReg2);
  if ($regs[1] == $regs[2]) {
      $out = eregi_replace("<a
href=['\"]".$cleanReg1."['\"][^>]*>".$cleanReg1."</a>", $regs[1], $out);
  } else {
      $out = eregi_replace("<a
href=['\"]".$cleanReg1."['\"][^>]*>".$cleanReg2."</a>", $regs[2]."
(".$regs[1].")", $out);
  }
}

$texte = preg_replace("|(<h[2]>)(.*)(<\/h[2]>)|U","<br /><br
/>----------------------------------------------------------------------<br
/>$1$2$3<br
/>----------------------------------------------------------------------<br
/>", $texte);
$texte = preg_replace("|(<h[3456]>)(.*)(<\/h[3456]>)|U","<br />···· $1$2$3
····", $texte);
$texte = ereg_replace ('<li[^>]>', "\n".'-', $texte);
$texte = ereg_replace ('&#8217;', '\'', $texte);
$texte = ereg_replace ('&#171;', '"', $texte);
$texte = ereg_replace ('&#187;', '"', $texte);
$texte = ereg_replace ('&amp;', '&', $texte);
$texte = textebrut($texte);
$texte = wordwrap($texte, 70, "\n");
return $texte;
}

Mathieu Lecarme wrote:

Pour pouvoir envoyer des tonnes de mails (newsletter), j'ai créer une
série d'outils pour Spip.
- Une machine à enlever le HTML, pour avoir une version texte presque
jolie du mail HTML.
- Une class pour envoyer des mails. Pour l'instant :
  - gestion du SMTP et de la fonction mail de PHP, et il est facile de
rajouter une nouvelle méthode d'envoi pour gérer l'authentification ou
des problèmes particuliers
  - gestion envoi HTML + text avec conversion automatique.
Cette class est "à la Spip", avec des methodes en français avec des _,
des commentaires phpdoc, et utilise spip_log et les métas pour ses
paramètres par défaut.

Je vais rajouter la gestion des bounces (check d'un compte spécifique
en pop3 via la crontab de Spip), et la gestion de "pile de mail" pour
envoyer les mails par petit paquets sans faire exploser les quotas.

Ca interesse quelqu'un?

Oui :wink:
Par contre, il me semble qu'il manque :
- balise de formulaire d'abonnement
- balise de formulaire de gestion de ses abonnements
- balise de génération d'un lien de désabonnement et/ou de gestion de ses
abonnements
- interface de création de newsletter (et de suppression)
- interface de gestion des abonnés (avec pagination,)
- gestion des abonnés avec 2 sources possibles : les membres de SPIP
(visiteurs, rédacteur, admins) et une table indépendante

BoOz wrote:

Mathieu Lecarme a écrit :
J'ai déjà fait la plupart de ces trucs as tu vu ?

http://demo.bloog.net/rubrique.php3?id_rubrique=1

Booz, tu voudrais pas mutualiser tes développements avec ceux de Mathieu.
Y'a matière a faire un truc super à vous deux :wink:

BoOz wrote:

Oui, je sais, je me suis inspiré de la partie conversion html vers
texte, j'ai regardé les besoins listés sur le wiki du lab, les
histoires de SMTP dans la liste (la routine SMTP est d'ailleurs basé
sur un truc posté dans la liste) et pour le bounce, je regarde
comment fait phplist.

La gestion des bounces automatiques nécéssite un serveur de mail et
beaucoup de taches pour pas grand chose AMHA...

Ben, quand tu as 100 abonnés, peut-être pas.
Mais sur www.tregouet.org avec + de 6000 abonnés, le taux de bounce n'est
pas exactement une sinécure (et la solution CleverMail non plus
d'ailleurs...).
Au CRU sur Sympa, certaines listes ateignent les 50% de bounces avec donc un
trafic entrant et sortant inutile non négligeable.

J'ai l'impression de revoir la discution engagée avant le developpement de
la blogletter de booz.
Si je ne me trompe pas, tout ceci se trouve dans ses sources... Alors plutôt
que de travailler chacun de son coté, autant collaborer

P.S. : Je viens de voir le film "How to make a Monster", dont la morale est
<< Travailler Ensemble, C'est Travailler Mieux >> :slight_smile:

-----Message d'origine-----

swenkerric a écrit :

J'ai l'impression de revoir la discution engagée avant le developpement de
la blogletter de booz.
Si je ne me trompe pas, tout ceci se trouve dans ses sources... Alors plutôt
que de travailler chacun de son coté, autant collaborer

Booz fait du teasing avec la magnifique Bloogletter n°4, je ne demande qu'à voir ce qu'elle a dans le ventre.
Oui, j'ai regardé comment marche la BloogLetter N°3, mais c'est juste une machine à envoyer des mails.
La class est tout à fait dérivable pour rajouter la couche newsletter ou autre variation.
Je suis tout à fait pret à travailler avec Booz pour que ma machine à mail se branche dans la bloogletter 4 sans problèmes.
De la même manière, cette machine a vocation de s'integrer au seins de Spip pour gerer les annonces par mail ou les la machine à évenements d'Antoine.

Demain matin, je fais relire mon code par un dev (Alexandre), et je met le code sur la liste.

M.

Par contre, il me semble qu'il manque :
- balise de formulaire d'abonnement
- balise de formulaire de gestion de ses abonnements
- balise de génération d'un lien de désabonnement et/ou de gestion de ses
abonnements
- interface de création de newsletter (et de suppression)
- interface de gestion des abonnés (avec pagination,)
- gestion des abonnés avec 2 sources possibles : les membres de SPIP
(visiteurs, rédacteur, admins) et une table indépendante

C'est juste du mail, ça c'est la couche au dessus.
Les spécificités des listes (les headers, par exemple) sont prévus, mais c'est tout.

M.

Oui, je sais, je me suis inspiré de la partie conversion html vers
texte, j'ai regardé les besoins listés sur le wiki du lab, les
histoires de SMTP dans la liste (la routine SMTP est d'ailleurs basé
sur un truc posté dans la liste) et pour le bounce, je regarde
comment fait phplist.
     

La gestion des bounces automatiques nécéssite un serveur de mail et
beaucoup de taches pour pas grand chose AMHA...
   

Ben, quand tu as 100 abonnés, peut-être pas.
Mais sur www.tregouet.org avec + de 6000 abonnés, le taux de bounce n'est
pas exactement une sinécure (et la solution CleverMail non plus
d'ailleurs...).
Au CRU sur Sympa, certaines listes ateignent les 50% de bounces avec donc un
trafic entrant et sortant inutile non négligeable.

Vous connaissez quoi comme outil libre de newsletters costaud. Sympa, Mailman ou Majordomo, c'est de la mailing list, pour du "read-only" il existe quoi?

M.

Mathieu Lecarme wrote:

Vous connaissez quoi comme outil libre de newsletters costaud. Sympa,
Mailman ou Majordomo, c'est de la mailing list, pour du "read-only" il
existe quoi?

Sympa peut être configuré en Read-only