Extraire et envoyer des pièces jointes avec Talend et Gmail

Extraire email par talend

29 Jan Extraire et envoyer des pièces jointes avec Talend et Gmail

Partons d’un scénario simple pour illustrer l’extraction et l’envoi de pièce jointe par Talend Studio :

 

  • Récupérer les données d’un serveur mail POP ou IMAP
  • Extraire les pièces jointes de chaque mail
  • Renvoyer chaque pièce jointe au même destinataire par un relai SMTP

 

L’objectif est d’avoir un job design de base auquel il est facile de rajouter des étapes de transformation de données (comme un simple tmap sur chaque pièce jointe). Pour pouvoir proposer un job Talend de transformation de fichier par envoi de mail.[/vc_column_text]

Prérequis

Il nous faut donc un serveur mail entrant POP (ou IMAP) et sortant SMTP, ça tombe bien si vous avez un compte Gmail tout est à votre disposition moyennant quelques manipulations très bien détaillées ici.

Il se peut que vous ayez besoin de configurer aussi les paramètres de votre compte pour qu’il accepte que talend puisse lire vos email. 

Dans cet exemple on utilisera un dossier dédié à ce job. Enfin vous avez bien sur besoin de Talend Studio (Open ou Entreprise) dans une version 6 et plus (ici 6.4).

Les sous-jobs et composants

Premier sous-job : Récupération et extraction des pièces jointes

  • Ajouter un composant tPOP, un tFileInputMail, un tFileDelete et un tSetGlobalVar.
  • Relier le tPOP au tFileInputMail par un lien Row Iterate.
  • Relier le tFileInputMail au tSetGlobalVar par un lien Row Main.
  • Relier enfin le tFileInputMail au tFileDelete par un lien Trigger OnCOmponentOk.

 

Pour chaque mail (lien Iterate) récupéré sur le serveur mail on utilise le composant tFileInputMail pour extraire les pièces jointes dans le même dossier. On supprime ensuite le fichier mail (tFileDelete) et on sauvegarde en variable globale le nom de l’expéditeur et le sujet du mail (pour pouvoir lui renvoyer correctement).

Deuxième sous-job : renvoi des pièces jointes

  • Ajouter maintenant un composant tFileList, tSendMail et tFileDelete.
  • Relier le tFileList au tSendMail par un lien Row Iterate.
  • Relier le tSendMail au tFileDelete par un lien Trigger OnComponentOk.

 

Le deuxième sous-job va donc pour chaque fichier listé dans le dossier de notre choix (celui ou l’on va extraire nos pièces jointes dans notre cas) envoyer un mail avec ce fichier en pièce jointe avant de le supprimer.

On relie enfin le premier sous-job au second en liant le tSetGlobalVar au tFileList par un lien Trigger OnComponentOk.

Le tout en image :

Extraire email par talend

Il y a en plus 2 composants tWarn pour le log des erreurs.

Configurer les composants du sous-job d’extraction

tPOP

Le répertoire de sortie doit être un dossier qui existe sur votre espace de travail. Si vous utilisez gmail l’utilisateur et le mot de passe sont vos identifiants google (remplacer context.mailServer par « votremail@gmail.com » ). La case « Utiliser le protocole de sécurisation des messages » est obligatoire. Vous pouvez choisir de cocher la case « Supprimer les email du serveur » et les emails traités par le job n’apparaitront pas dans votre boîte de réception. Malheureusement cette dernière option n’est pas disponible sur gmail avec le protocole POP, il faut passer par le protocole Imap.

 

Vous pouvez configurer dans Advanced Settings des filtres sur la récupération d’email. Pour que le job ne s’effectue que sur les email d’un certain expéditeur par exemple.

tFileInputMail

Les parties de l’email sont optionnelles pour la plupart, seul FROM, CC et SUBJECT seront utilisés dans la suite. Le schéma du composant dépend des parties de l’email que vous souhaitez utilisées :

6 colonnes STRING : TO, FROM, SUBJECT, CC, BODY, Received.

On utilise la variable tPOP_1_CURRENT_FILEPATH pour le Nom de fichier, elle correspond au nom du fichier courant ainsi que son chemin d’accès (du lien Iterate tPOP).

tSetGlobalVar

Le lien Row Main entre tFileInputMail et tSetGlobalVar a été renommé en mail_input dans l’exemple.

tDeleteFile

On supprime le fichier mail si l’extraction s’est bien passé.

Nom de fichier : ((String)globalMap.get(« tPOP_1_CURRENT_FILEPATH »))

Configurer les composants du sous-job d’envoi

tFileList

Modifiez le répertoire pour qu’il corresponde au répertoire ou vous avez extrait les pièces jointes dans le premier sous-job (tFileInputMail). Dans mon cas il s’agit toujours du répertoire « C:/Users/Tom/workspace/mails_process ».

tSendMail

On utilise les variables définies par le tSetGlobalVar pour ce composant. La pièce jointe correspond donc au fichier courant du tFileList. Vous pouvez optionnellement cocher la case « Afficher le nom de l’expéditeur » et modifier « somewhat@somewhere.com » en y mettant le nom de votre choix.

 

Pour la configuration des paramètre SMTP, à remplir selon votre server.

Pour google :

tDeleteFile

On supprime le fichier pièce jointe si l’envoi s’est bien passé.

Nom de fichier : ((String)globalMap.get(« tFileList_3_CURRENT_FILEPATH »))

Pour aller plus loin

Ici on utilise le même dossier pour récupérer l’email et les pièces jointes. Il est possible et plus courant d’utiliser deux dossiers différents. On peut aussi intercaler entre les deux sous-job un ou plusieurs jobs de transformation et envoyer les fichiers de sorties de ce nouveau sous-job.

 

Important : Dans ce cas le lien entre le composant de départ de ce sous-job et le sous-job d’envoi doit être un lien Trigger OnSubJobOk.

 

Exemple avec un simple tmap et tFileOutputDelimited :

Le tFileOutputDelimited enregistre les fichiers transformés dans un nouveau répertoire qui est le répertoire d’entrée dans la configuration du tFileList_3. Un mail d’erreur est aussi envoyé si une erreur a lieu à la lecture du fichier.

 

Si vous êtes intéressé par les bonnes pratiques de design de job talend je vous conseille grandement les excellents articles de Dave Anderson :

 

Tom

19 Commentaires
  • VANS OFF-WHITE X
    Posted at 06:57h, 21 novembre

    I don’t know if it’s just me or if perhaps everyone else experiencing problems with your site. It appears like some of the written text on your posts are running off the screen. Can someone else please provide feedback and let me know if this is happening to them as well? This may be a issue with my internet browser because I’ve had this happen previously. Cheers

  • black michael kors hamilton bag
    Posted at 21:54h, 22 novembre

    León roza los 10 grados bajo cero en el primer día del 2017 con máximas que no alcanzarán el grado.

  • all-star 91 converse
    Posted at 04:58h, 23 novembre

    “That’s what makes me good at football but it also makes me an animal.

  • asics cumulus 15 mens
    Posted at 06:20h, 24 novembre

    Jose Mourinho tells Chelsea fans he's 'Judas No 1' until a Blues boss wins four titlesThe Sun.

  • white crazy 8 adidas
    Posted at 08:38h, 25 novembre

    n his racism stormGranit Xhaka was interviewed by police after an incident alleged to have taken place at Heathrow Airport on Monday 23 January.

  • go pandora
    Posted at 05:37h, 29 novembre

    Rex Features4The experienced United boss has coached for over 20 yearsPA:Press Association4Frank Lam.

  • new balance w1540 uk
    Posted at 09:30h, 30 novembre

    asociación Aspace que ha conseguido financiación para hacer un parque accesible para los niños y niñas de su Asociación.

  • oakland athletics black jersey
    Posted at 17:01h, 30 novembre

    « En el mismo acto, también se ha hecho entrega de un diploma acreditativo a las empresas que s. »

  • jordan shoes for women online
    Posted at 00:22h, 01 décembre

    « Esperan que «por fin, de verdad y sin engaños» se reanuden las obras para la inte. »

  • new balance 580 men childe
    Posted at 08:04h, 01 décembre

    « ta León, y también es uno de los ‘escaparates’ principales para divulgar la provincia, con campañas, por ejemplo, en la estación de Chamartín de Madrid. »

  • new balance 860 dames purper
    Posted at 15:39h, 01 décembre

    « te;n despide a 38 oficiales y suboficiales de la Guardia Civil de la Escuela de Tráfico de Mérida7El Ayuntamiento renovará el alumbrado del recinto ferial para impulsar la atracción de eventos8Servicio y calidad para tu boca9Una mujer herida tras una aparatosa salida de vía en León10Gitanos, sin etiquetas1«Bebamos una copina de Genarín»2Gitanos, sin etiquetas1s://vimeo/2122191582?Bebamos una copina de Genar?n?3ACOM llega a Europa para gestionar la reactivaci?n econ?mica y social de las cuencas mineras4El himno de Le?n asombra a Buenafuente y Broncano5El juzgado de Ponferrada decreta prisi?n provisional para dos nuevos detenidos por el caso de la carne equina no apta6La guerra no ha terminado7Fervor y pasi?n8El autismo y la eterna espera9Tattoo Mo-Gur, 20 a?os de arte en la piel10Fervor por ‘La Morenica’TemasLe?nTAGSfroilan, busca, cartel, fiestasDeja tu comentario. »

  • converses blanches basses femme
    Posted at 22:54h, 01 décembre

    « Vicente Canuria Atienza, concejal del Partido Socialista, ha declarado este viernes en una rueda de . »

  • scarpe adidas 700
    Posted at 05:54h, 02 décembre

    « Además, hay otras 47 personas que ya han pasado a la fase de integración. »

  • blazer nike 42
    Posted at 13:34h, 04 décembre

    –¿Quién era la persona que llevaba los temas de formación.

  • 123
    Posted at 20:50h, 04 décembre

    El éxito de cobertura del cribado del cáncer de colon y de recto está tardando en llegar en Castilla y León.

  • nouvelle air max rose
    Posted at 04:18h, 07 décembre

    SAMIR NASRI wants to quit Manchester City and move to Sevilla permanently in the summer.

  • air max 97 collector
    Posted at 08:51h, 08 décembre

    « After eight months of discussions with United, never with Pep, always me, and rejecting great financial terms, it all finished. »

  • nike free 5.0 orange femme
    Posted at 09:34h, 10 décembre

    « C’è spazio anche per la collezione Originals, caratterizzata dal logo del trifoglio, che si i. »

  • adidas superstar blue and white
    Posted at 09:22h, 14 décembre

    Gday! This is the third time visiting now and I really just wanted to say I truley enjoy looking at your blog website. I have decided to bookmark it at delicious.com with your title: %BLOGTITLE% and your Website address: %BLOGURL%. I hope this is alright with you, I’m making an attempt to give your great blog a bit more exposure. Be back soon.

Envoyer un commentaire