Domanda

Sto usando Mutt su SSH come client di posta. Funziona alla grande, ma guardare gli allegati (principalmente immagini) è un po 'fastidioso. Ora la mia idea è quella di analizzare l'e -mail, memorizzare gli allegati sul mio server e creare un URL per accedere all'allegato e mettere questo URL all'interno dell'e -mail. Qualcuno l'ha già fatto? Qual è un modo semplice per raggiungere questo obiettivo?

Sto già usando Procmail per filtrare le cose, posso usarlo per inserire il testo nella mia e -mail?

Grazie

È stato utile?

Soluzione

Certo che puoi. Tuttavia, non esiste un supporto diretto per MIME, quindi probabilmente hai bisogno di qualcosa di più o meno intelligente per assicurarti di non rovinare la struttura mime del messaggio che stai elaborando.

Come semplice esempio di inizio, supponiamo di aver estratto un attaccamento a ~/public_html/prv/att000.jpg e fai impostare il tuo server web per servire questo a http://localhost:8080/~you/prv/att00.jpg, potresti aggiungere un'intestazione come questa;

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

L'aggiunta di qualcosa in linea al messaggio stesso è più difficile, ma non è impossibile.

Modificare: Lo script può essere semplificato per non utilizzare un file temporaneo (e da BY, evitare il multiplo Usi inutili di gatto) se estrai l'ID del messaggio dall'interno della tua ricetta:

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

... ma forse vuoi mantenere il tuo script (senza i gatti inutili) e modificarlo in modo che non solo estragga gli allegati, ma crei anche un messaggio modificato sull'output standard con i collegamenti agli allegati in linea.

Posso suggerire tre opzioni, tutte leggermente ingombranti. Supponiamo che il tuo messaggio in arrivo sia (multipart/misto (testo/semplice (multipart/text/html immagine/png immagine/png)))); potresti

  1. Avvolgi il tuo messaggio in A (multipart/correlato (testo/semplice: il tuo elenco di collegamenti qui) (messaggio/rfc822: messaggio originale qui: (multipart/misto (testo/pianura (multipart/text/html immagine/png immagine/png )))). Questo non richiede affatto di analizzare il messaggio originale, ma è imbarazzante da visualizzare nella maggior parte dei clienti.

  2. Supponiamo che ci sia sempre una parte di testo/semplice e allegare l'elenco dei collegamenti alla sua fine. Ciò richiede la logica per trovare ed estendere la prima parte di testo/semplice e una sorta di fallback se non esiste una parte di testo/semplice come prima parte.

  3. Supponiamo che tutti i tuoi messaggi siano multipart/* e aggiungano una parte di testo/semplice vicino all'inizio, come prima parte o immediatamente dopo la prima parte di testo/semplice. Ciò richiede la stessa logica e potrebbe essere imbarazzante da visualizzare in alcuni clienti, ma fa meno ipotesi sul messaggio in arrivo, e quindi potrebbe essere più sicuro.

Se riesci a codificarlo, invocare Procmail su di esso è abbastanza semplice; Basta omettere il h Flag dalla ricetta precedente (che specifica solo filtrare nelle intestazioni).

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

Altri suggerimenti

Al momento ho questo:

In Procmail faccio una copia come questa:

:0c
| myscript.sh

Quindi in 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

Quindi l'unica cosa che devo fare è ottenere l'ID del messaggio dalla posta e creare il mio URL.

Come suggerito da Tripleee, potrei aggiungere questo URL come intestazione ..

Sarebbe bello se ci fosse un link nel messaggio, forse lo farò un'altra volta. Al momento sto bene con questa soluzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top