Question

J'utilise Mutt Over SSH comme client de messagerie. Cela fonctionne très bien, mais regarder les pièces jointes (principalement des images) est un peu ennuyeuse. Maintenant, mon idée est d'analyser l'e-mail, de stocker les pièces jointes sur mon serveur et de créer une URL pour accéder à la pièce jointe et de mettre cette URL dans l'e-mail. Quelqu'un a-t-il déjà fait cela? Quel est un moyen simple d'y parvenir?

J'utilise déjà Procmail pour filtrer les trucs, puis-je l'utiliser pour insérer du texte dans mon e-mail?

Merci

Était-ce utile?

La solution

Sûr que vous pouvez. Il n'y a pas de support direct pour le mime, cependant, vous avez donc probablement besoin de quelque chose de plus ou moins intelligent pour vous assurer de ne pas gâcher la structure MIME du message que vous traitez.

À titre d'exemple de départ simple, supposons que vous ayez extrait une attachement à ~/public_html/prv/att000.jpg Et demandez à votre serveur Web configuré pour servir cela à http://localhost:8080/~you/prv/att00.jpg, vous pouvez ajouter un en-tête comme celui-ci;

:0fhw
| formail -I"X-Tracted: http://localhost:8080/~you/prv/att00.jpg"

Ajouter quelque chose en ligne au message lui-même est plus difficile, mais je ne suis pas impossible.

Éditer: Votre script peut être simplifié pour ne pas utiliser de fichier temporaire (et par le par, évitez le multiple Utilisations inutiles du chat) Si vous extraire le message de Message à partir de votre recette:

# Whitespace in [square brackets] is tab, space
:0c
* ^Message-Id:[   ]*<\/[^@>]+
| (mkdir -p "webserver path"/"$MATCH"; munpack -C "webserver path"/"$MATCH" )

... Mais peut-être que vous voulez garder votre script (sans les chats inutiles) et le modifier afin qu'il extrait non seulement les pièces jointes, mais crée également un message modifié sur la sortie standard avec les liens vers les pièces jointes en ligne.

Je peux suggérer trois options, toutes légèrement lourdes. Supposons que votre message entrant est un (multipart / mixte (texte / plaine (multipart / texte associé / HTML image / png image / png))); vous pourriez

  1. Enveloppez votre message dans un (multipart / lié (texte / simple: votre liste de liens ici) (message / RFC822: Message original ici: (Multipart / mix )))). Cela ne vous oblige pas du tout à analyser le message d'origine, mais il est difficile à afficher chez la plupart des clients.

  2. Supposons qu'il y ait toujours une partie texte / simple et joindre la liste des liens à sa fin. Cela nécessite une logique pour trouver et étendre la première pièce de texte / simple, et une sorte de repli s'il n'y a pas de texte / une partie simple comme première partie.

  3. Supposons que tous vos messages soient multipAR / * et ajoutez simplement une partie texte / simple près du début, comme la toute première partie, ou immédiatement après la première partie texte / simple. Cela nécessite la même logique et peut être gênant à voir chez certains clients, mais fait moins d'hypothèses sur le message entrant, et peut donc être plus sûr.

Si vous pouvez coder cela, invoquer le procmail est assez simple; omettez juste le h Flag de la recette précédente (qui spécifie pour filtrer uniquement dans les en-têtes).

:0fw
| replace-entire-message-with-a-different-message

Autres conseils

Pour le moment, j'ai ceci:

Dans Procmail, je fais une copie comme ceci:

:0c
| myscript.sh

puis dans myscript.sh

path="webserver path"

tee _temp >& /dev/null # is there a different way of doing this?

# extract message-id
mid=$(cat _tempmail | formail -c -x message-id - | sed 's/ <\(.*\)@.*>/\1/')

mkdir $path/$mid

# extract all attachments into directory depending on the message id
cat _tempmail | munpack -C $path/$mid

Donc, la seule chose que je dois faire est de faire passer le message à partir du courrier et de créer mon URL.

Comme suggéré par Tripleee, je pourrais ajouter cette URL comme en-tête.

Ce serait formidable s'il y a un lien dans le message, peut-être que je le ferai une autre fois. Pour le moment, je suis d'accord avec cette solution.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top