envoyer le contenu par mail lors de la création d'une page

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

Au boulot, on désire mettre en place un Intranat.
Depuis un peu plus d'une semaine, je découvre drupal, de part sa souplesse, je crois vraiment que c'est le cms le plus adapté à nos demande.

Je coince juste sur un truc :
- Je voudrais que quand un utilisateur créé une page dans une catégorie, le contenu de cette page soit également envoyée par mail à une mailing-list.

Par exemple, quand le chef du département dep1 créé une page dans la catégorie "dep1", le contenu de cette page soient envoyée à la mailing-list list-dep1@domain.com

J'ai bien découvert le module email qui permet d'ajouter un type de contenu email mais ca ne me satisfait pas.

Connaissez-vous un module qui gère ce genre de chose?

Je connais pas trop mal le PHP, en dernier recours, je pourrais donc changer le code. Si tel est le cas, une piste du fichier à modifier... (node.module?)

D'avence , merci.

Version de Drupal : 

Merci kalis,

C'est exactement ca qu'il me faut.

le module action pour créer une action d'envoi de mail
le module workflow pour programmer l'action sur un évenement (dans mon cas ajout d'une page)

Pour créer l'action, je suis tombé sur ca http://drupal.org/node/48738 qui est une très bonne base pour mes attentes.

Faudra juste que je n'envoie pas au mail de chaque personne mais à une mailing list.

Je regarde comme modifier le code debut de semaine prochaine, je vous tiens au courant.

Pour ceux que ca interesse, j'ai une solution au problème.

Grâce au conseil de kalis1 :

J'ai activé le module "action" et "workflow".
J'ai écrit un nouveau module "SendMailToMailingList" en php que j'ai activé sur ma plateforme.
A l'aide du module "workflow", j'ai planifié l'action "SendMailToMailingList" sur l'ajout d'une nouvelle page.

ici le module "SendMailToMailingList" que j'ai écrit :

<?php
function action_send_email_to_a_mailinglist($op, $edit = array(), $node) {
  switch(
$op) {
    case
'metadata':
      return array(
       
'description' => t('Send Email to a mailing-list'),
       
'type' => t('Email'),
       
'batchable' => false,
       
'configurable' => false,
      );

    case
'do':
     
     
$mail_from = "postmaster@mondomaine.com";
     
$mail_subject = $node->title;
     
$mail_message = strip_tags($node->body);
       
       
//rechercher quel "term" est associé au node
       
$nodeterm=db_result(db_query("SELECT name FROM term_data WHERE tid = ( SELECT tid FROM term_node WHERE nid = ".$node->nid." )"));

       
//associer la mailing-list au "term" du node
       
switch($nodeterm) {
    case
'dep1': $mail_to='list-dep1@mondomaine.com'; break;
          case
'dep2': $mail_to='list-dep2@mondomaine.com'; break;
          case
'dep3': $mail_to='list-dep3@mondomaine.com'; break;
          default    :
$mail_to='nobody'; break;
        }

 
//si necessaire, envoyer le mail
  
if ($mail_to != 'nobody'){
            if (
user_mail($mail_to, $mail_subject, $mail_message, $mail_from)) {
             
watchdog('action', t('Sent email to '.$mail_to));
            }
            else {
             
watchdog('error', t('Unable to send email to '.$mail_to));
        }
        }   
     
      break;
  }
}
?>

Quand on ajoute une page dans le term "dep1", un mail avec le contenu de la page est envoyé à la mailing list list-dep1@mondomaine.com.

Ce script n'est pas paramétrable via l'interface mais les paramètre sont hardcodé dans le code, je ne me suis pas trop cassé la tête....

Il fonctionne, maintenant faudrait voir si quand on active un éditeur WYSIWYG, le mail sera bien interprété par les client mail, à voir et tester....

Intéressant.

Mais je comprends pas comment tu fais pour relier ce code au module workflow ? En fait, cette fonction est une espèce de "hook" du module workflow, c'est ça ? Ce code va donc dans le module workflow lui-même ?

Si oui, c'est bien, mais c'est un fork (i.e. obligation de recopier ce code à chaque màj du module).

En fait, le code ci-dessus est une "action" et pas une modif de WorkFlow...

En fait je me suis vraiment basé sur ceci : http://drupal.org/node/48738

Sauf que j'ai changé le code.

L'idée est la suivante :
- J'ai installé et activé les modules "Action" et "Workflow"
- J'ai créé un fichier SendMailToMailingList.module (le code php ci-dessus) dans mon directory /module
- J'ai activé le module SendMailToMailingList.module
- A partir de là SendMailToMailingList apparait dans la liste des "action" possible
- A l'aide du module WorkFlow, j'ai associé l'action SendMailToMailingList à l'évènement "ajouter nouvelle page"

Et pour l'instant ca fonctionne.

Je suis en pleine phase de test et j'ai installé 2 plateformes : drupal 5.1 et 4.7.6.

Ceci fonctionne en 4.7.6 mais j'ai du mal avec la 5.1 (je n'arrive pas a voir SendMailToMailingList dans la liste des module, mais j'ai pas essayé vraiment longtemps, il ya peu être une astuce....).

De plus, pour l'instant le WorkFlow est en Beta pour la 5.1

Yep, j'ai écrit "WorkFlow" mais je pensais "Action". :=)

En effet, ce que tu décris ressemble à un "hook" : Drupal détecte automatiquement la fonction parce qu'elle possède une signature particulière (probablement le fait de s'appeler "action_xxx").

Merci pour les infos en tout cas.

Bonjour,

J'aimerais faire la même chose que toi mais j'arrive pas à activer le module SendMailToMailingList, en effet il n'apparait même pas dans la liste des modules (quand je vais dans l'administration de mes modules).
Le module a été placé dans le dossier /sites/all/modules/.
J'ai testé deux choses, si le module est placé directement dans ce dossier et en le mettant dans un dossier nommé SendMailToMailingList.

Peut-tu me dire s'il y a quelques choses de spécial a faire en plus car je ne vois pas trop pourquoi il n'apparait pas.
Merci

Bonjour à tous,

Ce sujet semble bien répondre à mon problème. Mais peut-être y'a-t-il du nouveau depuis 2007 ?

Je suis sur un projet d'Intranet pour mon entreprise et il faudrait que les valideurs soient alertés (par mail) lorsque du contenu est soumis par les contributeurs.

Comme chaque valideur doit valider le contenu soumis par CERTAINS contributeurs (pas tous), je souhaiterais qu'ils reçoivent uniquement les alertes qui les concerne.

En espérant que cela soit assez clairement dit pour que vous compreniez...

je remercie d'avance très fort tous ceux qui prendront le temps de se pencher sur mon problème.

@ bientôt !