repl.sh - rohrpost - A commandline mail client to change the world as we see it.
(HTM) git clone git://r-36.net/rohrpost
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
repl.sh (2499B)
---
1 #!/bin/bash
2
3 usage() {
4 printf "usage: $(basename $1) [-hal] mailid\n" >&2
5 }
6
7 doall=0
8 dolist=0
9
10 while getopts "hal" opt;
11 do
12 case $opt in
13 a)
14 doall=1
15 ;;
16 l)
17 dolist=1
18 ;;
19 *)
20 usage $0
21 exit 1
22 ;;
23 esac
24 done
25 shift $(expr $OPTIND - 1)
26
27 if [ "$1" = "--" ];
28 then
29 shift 1
30 fi
31
32 if [ $# -lt 1 ];
33 then
34 usage $0
35 exit 1
36 fi
37
38 ids="$@"
39 if [ -z "$ids" ];
40 then
41 usage $0
42 exit 1
43 fi
44
45 nsubject=$(rpview -ve Subject -- "$ids")
46 if [ -z "$nsubject" ];
47 then
48 nsubject="Subject"
49 else
50 case "$nsubject" in
51 Re:*)
52 ;;
53 *)
54 nsubject="Re: ${nsubject}"
55 ;;
56 esac
57 fi
58
59 from=$(rpview -ve ^From -- "$ids" | sed 's/\n//')
60 cc=$(rpview -ve ^Cc -- "$ids" | sed 's/\n//')
61 references=$(rpview -ve ^References -- "$ids" | sed 's/\n//')
62 msgid=$(rpview -ve ^Message-ID -- "$ids" | sed 's/\n//')
63 inreplyto=$(rpview -ve ^In-Reply-To -- "$ids" | sed 's/\n//')
64 listpost=$(rpview -ve ^List-Post -- "$ids" \
65 | sed -e 's/.*mailto:\([^> ]*\).*/\1/')
66
67 replytohdrs=$(rpview -ve ^Reply-To -- "$ids" | sed 's/\n//')
68 replyto=""
69 IFS='
70 '
71 for rt in $replytohdrs;
72 do
73 if [ -z "$replyto" ];
74 then
75 replyto="$rt"
76 else
77 replyto="$replyto, $rt"
78 fi
79 done
80
81 if [ -n "$references" ] && [ -n "$msgid" ];
82 then
83 references="$references $msgid"
84 fi
85 if [ -z "$references" ] && [ -n "$msgid" ];
86 then
87 if [ -n "$inreplyto" ];
88 then
89 references="$inreplyto $msgid"
90 else
91 references="$msgid"
92 fi
93 fi
94
95 nto=""
96 ncc=""
97 if [ $dolist -eq 1 ] && [ -n "$listpost" ];
98 then
99 nto="$listpost"
100 fi
101 if [ $doall -eq 1 ];
102 then
103 if [ -z "$replyto" ];
104 if [ -z "$nto" ];
105 then
106 nto="$from"
107 ncc="$cc"
108 else
109 ncc="$from, $cc"
110 fi
111 then
112 if [ -z "$nto" ];
113 then
114 nto="$replyto"
115 ncc="$from, $cc"
116 else
117 ncc="$replyto, $from, $cc"
118 fi
119 fi
120 fi
121 if [ -z "$nto" ];
122 then
123 if [ -z "$replyto" ];
124 then
125 nto="$from"
126 else
127 nto="$replyto"
128 fi
129 fi
130
131 printf "Date: $(LC_ALL=C date "+%a, %d %b %Y %T %z")\n"
132
133 if [ -n "$msgid" ];
134 then
135 printf "In-Reply-To: ${msgid}\n"
136 fi
137 if [ -n "$references" ];
138 then
139 printf "References: ${references}\n"
140 fi
141
142 printf "User-Agent: rohrpost\n"
143 printf "MIME-Version: 1.0\n"
144 printf "Content-Type: text/plain; charset=utf-8\n"
145 printf "Content-Transfer-Encoding: 8bit\n"
146 printf "From: $(rpcfg -v defaultfrom)\n"
147 printf "To: ${nto}\n"
148 printf "Cc: ${ncc}\n"
149 printf "Bcc:\n"
150 printf "Subject: ${nsubject}\n"
151 [ -e "$HOME/.mailheaders" ] && cat "$HOME/.mailheaders"
152 printf "\n"
153
154 printf "On $(LC_ALL=C date "+%a, %d %b %Y %T %z") ${from} wrote:\n"
155 rpview -nb -- "$ids" | sed 's/^/> /'
156 printf "\n"
157
158 [ -e $HOME/.signature ] && cat $HOME/.signature
159