Extraire / enregistrer une pièce jointe à l'aide de bash


30

Utiliser des bashoutils normaux (c.-à-d. Des outils intégrés ou des outils de ligne de commande couramment

  • possible, et
  • Comment

extraire / enregistrer des pièces jointes sur les e-mails?

Par exemple, disons que j'ai un rapport nocturne qui arrive par e-mail mais qui est une archive zip de plusieurs fichiers journaux. Je veux enregistrer tous ces zips dans un répertoire de sauvegarde. Comment pourrais-je accomplir cela?


"outils bash normaux" - voulez-vous dire utiliser uniquement les fonctions intégrées à bash (c'est-à-dire ce que vous trouverez dans la page de manuel bash) ou voulez-vous dire, plus généralement, des outils de ligne de commande que vous pourriez ajouter à un script shell bash ?
Doug Harris

@Doug Harris - soit .. si je peux appeler mailet faire cela, ou enregistrer la pièce jointe autrement, ça va aussi :)
warren

Réponses:


29

Si vous visez la portabilité, sachez qu'il existe plusieurs versions différentes de mail(1)et mailx(1). Il existe une mailxcommande POSIX , mais avec très peu d'exigences. Et aucune des implémentations que j'ai semble analyser de toute façon les pièces jointes.

Vous pourriez avoir le paquet mpack . Sa munpackcommande enregistre toutes les parties d'un message MIME dans des fichiers séparés, puis tout ce que vous avez à faire est de sauvegarder les parties intéressantes et de nettoyer le reste.

Il y a aussi la métamail . Un équivalent de munpackis metamail -wy.


Pour ajouter également que si vous souhaitez également extraire le texte des parties MIME de l'e-mail lors de l'utilisation, munpackutilisez l'option '-t':munpack -t email_file
Pierz

Merci pour l'info metamail. Pouvez-vous m'aider à répondre à cette question ?
George


2
  • OUI possible

  • Voici COMMENT (Ressource d' ici )

trouver des fichiers contenant dir | pendant la lecture du fichier; faire

créer tempdir et y copier le fichier

exécuter munpack sur un fichier et copier les pièces jointes ailleurs

détruire tempdir (contenu)

terminé


Si quelqu'un veut que je colle le script Perl ici, il suffit de laisser un commentaire
subanki

1
si vous seriez si gentil (laissant évidemment l'attribution de l'endroit où vous l'avez trouvé :))
warren

1
il suffit de lire le script ... c'est beaucoup de perl!
warren

vous êtes donc sûr de vouloir que j'inclue cela dans ma réponse, cela deviendra très long.
subanki

ne collez pas ici, la copie à partir de la source d'origine serait mieux dans ce cas :)
warren
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.