Add mutt specific scripts here
[dotfiles/scripts.git] / mutt-check-attachment
1 #!/bin/bash
2
3 ##
4 ## Script: /usr/local/bin/mutt_check_attachment_before_send.sh
5 ##
6 ## Original source: http://wiki.mutt.org/?ConfigTricks/CheckAttach
7 ##
8 ## This slightly amended version uses zenity if available and if called from a X sessions
9 ##
10 ## Edit muttrc to have this line:
11 ## set sendmail = "/path/to/check_attachment.sh"
12 ##
13
14 ## Attachment keywords that the message body will be searched for:
15 KEYWORDS='attach|ci-joint|pi├Ęce jointe'
16
17 ## Save msg in file to re-use it for multiple tests.
18 TMPFILE=`mktemp -t mutt_checkattach.XXXXXX` || exit 2
19 cat > "$TMPFILE"
20
21 ## Define test for multipart message.
22 function multipart {
23     grep -q '^Content-Type: multipart' "$TMPFILE"
24 }
25
26 ## Define test for keyword search.
27 function word-attach {
28     grep -v '^>' "$TMPFILE" | grep -E -i -q "$KEYWORDS"
29 }
30
31 ## Header override.
32 function header-override {
33     grep -i -E "^X-attached: *none *$" "$TMPFILE"
34 }
35
36 ### Query function must return "true" to let the msg pass.
37 function ask {
38     zenity --question --title 'mutt' --text 'Did you include the attachment (if you wanted to)?'
39 }
40
41 ## FINAL DECISION:
42 # Use zenity if possible
43 if [ -n $DISPLAY ] && [ -x /usr/bin/zenity ] ; then
44     if multipart || ! word-attach || ask; then
45         /usr/lib/sendmail "$@" < $TMPFILE
46         EXIT_STATUS=$?
47     else
48         EXIT_STATUS=1
49     fi
50 # or fallback to using an X-attached: none header
51 else
52     if multipart || ! word-attach || header-override; then
53         /usr/lib/sendmail "$@" < $TMPFILE
54         EXIT_STATUS=$?
55     else
56         echo "No file was attached but a search of the message text suggests there should be one.  Add a header \"X-attached: none\" to override this check if no attachment is intended."
57         EXIT_STATUS=1
58     fi
59 fi
60
61 ## Delete the temporary file.
62 rm -f "$TMPFILE"
63
64 ## That's all folks.
65 exit $EXIT_STATUS