Mercurial > hg > mlmmj
annotate README.listtexts @ 754:ecb991e41a4c
Add $controlN$ substitution
The interfaces to substitute() and substitute_one() have changed, as they
now need to know the listdir to be able to find control files
author | Ben Schmidt |
---|---|
date | Wed, 06 Oct 2010 23:30:26 +1100 |
parents | fdc57c9e5f56 |
children | 6f8df4842d91 |
rev | line source |
---|---|
738 | 1 README.listtexts |
2 | |
3 List texts in mlmmj | |
4 =================== | |
5 | |
6 List texts are stored in listdir/text. They specify the content of various | |
7 automatic emails that Mlmmj sends. They are provided in a number of different | |
8 languages. The language to use for a list is chosen when you run the | |
749
fdc57c9e5f56
Remove .sh from mlmmj-make-ml.sh; symlink original name
Ben Schmidt
parents:
745
diff
changeset
|
9 mlmmj-make-ml script and the appropriate files are copied into your |
738 | 10 listdir/text directory. |
11 | |
12 This file documents | |
13 | |
14 - Supported list texts | |
15 - List text format | |
16 - List text substitutions | |
17 | |
18 Supported list texts | |
19 -------------------- | |
20 | |
21 The following list texts are supported by mlmmj: | |
22 | |
23 - access | |
24 sent to a poster when their post is denied because of an access rule | |
25 | |
26 - bounce-probe | |
27 sent to a subscriber after an email to them bounced to inform them of the | |
28 bounce and probe when the address is no longer bouncing | |
29 | |
30 - digest | |
31 sent at the start of a digest | |
32 | |
33 - listfaq | |
34 sent in response to an email to listname+faq@domain.tld | |
35 | |
36 - listhelp | |
37 sent in response to an email to listname+help@domain.tld | |
38 | |
39 - listsubs | |
40 sent in response to an email to listname+list@domain.tld from the list owner | |
41 (the formatted list of subscribers is automatically appended to the listtext) | |
42 | |
43 - maxmailsize | |
44 sent to the poster when a mail exceeds the maximum allowed size | |
45 | |
46 - moderation | |
47 - moderation-poster | |
48 sent when a message is to be moderated (to the appropriate moderators or to | |
49 the poster) | |
50 | |
51 - notifysub | |
52 - notifysub-digest | |
53 - notifysub-nomail | |
54 - notifyunsub | |
55 - notifyunsub-digest | |
56 - notifyunsub-nomail | |
57 sent to the list owner when somebody is (un-)subscribed | |
58 | |
59 - notintocc | |
60 sent to the poster when the list address is not found in a To: or CC: header | |
61 | |
62 - sub-confirm | |
63 - sub-confirm-digest | |
64 - sub-confirm-nomail | |
65 sent to a requester to allow them to confirm a subscription request | |
66 | |
67 - sub-deny-digest | |
68 - sub-deny-nomail | |
69 sent when a subscription request is received for the digest or nomail version | |
70 of a list when that version is disabled | |
71 | |
72 - sub-ok | |
73 - sub-ok-digest | |
74 - sub-ok-nomail | |
75 sent to the new subscriber when a subscription succeeds | |
76 | |
77 - sub-subscribed | |
78 sent to a person sending a subscription request when they are already | |
79 subscribed to the list | |
80 | |
81 - submod-moderator | |
82 - submod-requester | |
83 sent when a subscription is to be moderated (to the appropriate moderators | |
84 or to the requester) | |
85 | |
86 - subonlypost | |
87 sent to the poster when they attempt to post to a subonlypost list without | |
88 being subscribed | |
89 | |
90 - unsub-confirm | |
91 - unsub-confirm-digest | |
92 - unsub-confirm-nomail | |
93 sent to a subscriber to allow them to confirm an unsubscription request | |
94 | |
95 - unsub-notsubscribed | |
96 sent to a person sending an unsubscription request when they are not actually | |
97 subscribed to the list | |
98 | |
99 - unsub-ok | |
100 - unsub-ok-digest | |
101 - unsub-ok-nomail | |
102 sent to the old subscriber when an unsubscription succeeds | |
103 | |
104 List text format | |
105 ---------------- | |
106 | |
107 They have the following format: | |
108 | |
741
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
109 - Headers |
738 | 110 - Blank line |
111 - Body | |
112 | |
113 They are expected to be in UTF-8 encoding and have Unix line endings. | |
114 | |
741
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
115 The headers should be formatted as they should appear in the mail message. They |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
116 will begin the mail message. Header continuation via lines beginning with |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
117 linear whitespace is supported. |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
118 |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
119 Following the headers found in the list text, Mlmmj will output the following |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
120 default headers, unless the same header is already provided in the list text. |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
121 |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
122 - From: |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
123 - To: |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
124 - Message-ID: |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
125 - Date: |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
126 - Subject: mlmmj administrivia |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
127 - MIME-Version: 1.0 |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
128 - Content-Type: text/plain; charset=utf-8 |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
129 - Content-Transfer-Encoding: 8bit |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
130 |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
131 The Subject: header is treated specially: it may include UTF-8 characters, |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
132 which will automatically be escaped using the =?utf-8?q?...?= quoting |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
133 mechanism. |
738 | 134 |
135 List text substitutions | |
136 ----------------------- | |
137 | |
741
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
138 Both headers and body may include the following, which are substituted prior to |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
139 sending the message (though note that some of these substitutions are |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
140 multi-line substitutions and would not work in a header): |
738 | 141 |
142 - $bouncenumbers$ | |
143 (available only in bounceprobe) | |
144 the formatted list of indexes of messages which may not have been received as | |
145 they bounced | |
146 | |
147 - $confaddr$ | |
148 (available only in [un]sub-confirm[-digest|-nomail]) | |
149 the address to which to send mail to confirm the (un-)subscription in | |
150 question | |
151 | |
754 | 152 - $controlN$ |
153 the contents of the control file named N, with its final newline stripped; N | |
154 represents the name of the file to be found in the list's control | |
155 subdirectory; the name may only include letters and digits | |
156 | |
738 | 157 - $digestfirst$ |
158 (available only in digest) | |
159 index of the first message included in a digest | |
160 | |
161 - $digestinterval$ | |
162 (available only in digest) | |
163 indexes of the first and last messages included in a digest (e.g. 1-5), or | |
164 just the index if only a single message is included | |
165 | |
166 - $digestissue$ | |
167 (available only in digest) | |
168 the issue number of the digest | |
169 | |
170 - $digestlast$ | |
171 (available only in digest) | |
172 index of the last message included in a digest | |
173 | |
174 - $digestsubaddr$ | |
175 listname+subscribe-digest@domain.tld | |
176 | |
177 - $digestthreads$ | |
178 (available only in digest) | |
179 the list of threads included in the digest | |
180 | |
181 - $digestunsubaddr$ | |
182 listname+unsubscribe-digest@domain.tld | |
183 | |
184 - $faqaddr$ | |
185 listname+faq@domain.tld | |
186 | |
187 - $helpaddr$ | |
188 listname+help@domain.tld | |
189 | |
190 - $listaddr$ | |
191 listname@domain.tld | |
192 | |
193 - $listgetN$ | |
194 listname+get-N@domain.tld | |
195 (the N here is nothing special, so this won't actually work, but is used to | |
196 explain to users how to use the +get functionality) | |
197 | |
198 - $listowner$ | |
199 listname+owner@domain.tld | |
200 | |
201 - $listsubaddr$ | |
202 listname+subscribe@domain.tld | |
203 | |
204 - $listunsubaddr$ | |
205 listname+unsubscribe@domain.tld | |
206 | |
207 - $maxmailsize$ | |
208 (available only in maxmailsize) | |
209 the maximum size of mail that Mlmmj will accept | |
210 | |
211 - $moderateaddr$ | |
212 (available only in moderation and submod-moderator) | |
213 the address to which to send mail to approve the post or subscription in | |
214 question | |
215 | |
216 - $moderators$ | |
217 (available only in moderation, moderation-poster and submod) | |
218 the formatted list of moderators to whom the moderation request has been sent | |
219 | |
220 - $newsub$ | |
221 (available only in notifysub, notifysub-digest and notifysub-nomail) | |
222 the address that has been subscribed | |
223 | |
224 - $nomailsubaddr$ | |
225 listname+subscribe-nomail@domain.tld | |
226 | |
227 - $nomailunsubaddr$ | |
228 listname+unsubscribe-nomail@domain.tld | |
229 | |
230 - $oldsub$ | |
231 (available only in notifyunsub, notifyunsub-digest and notifyunsub-nomail) | |
232 the address that has been unsubscribed | |
233 | |
234 - $originalmail$ | |
742 | 235 - $originalmailN$ |
236 the email message being processed (usually a mail being moderated); this must | |
237 appear first on a line, optionally preceded by whitespace: any preceding | |
238 whitespace is prepended to each line of the mail that is included and the | |
239 rest of the line following originalmail$ is ignored; N represents a number, | |
240 which is how many lines of the message (including headers) to include: if | |
241 omitted, 100 will be used, and to include the whole message, use a large | |
242 number like 1000000000. | |
738 | 243 |
244 - $posteraddr$ | |
744 | 245 (available only in access, notintocc, moderation, moderation-poster and |
246 subonlypost) | |
738 | 247 the from address of the message that was received as determined by Mlmmj |
248 | |
745 | 249 - $random0$ |
250 - $random1$ | |
251 - $random2$ | |
252 - $random3$ | |
253 - $random4$ | |
254 - $random5$ | |
255 these are 6 distinct random strings; they allow list texts to be constructed | |
256 that are MIME messages with attachments by using creating boundaries that are | |
257 unlikely to appear in the attached messages | |
258 | |
738 | 259 - $subaddr$ |
260 (available only in submod-moderator and [un]sub-confirm[-digest|-nomail]) | |
261 the address requested to be (un-)subscribed | |
262 | |
744 | 263 - $subject$ |
264 (available only in access, notintocc, moderation, moderation-poster and | |
265 subonlypost) | |
266 the subject line of the message in question | |
267 | |
741
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
268 - \uNNNN |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
269 (NNNN are hex digits) |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
270 a Unicode character |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
271 (this is not really appropriate for use in a header, except perhaps the |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
272 Subject: header as Mlmmj does automatic quoting for that header as described |
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
273 above) |
738 | 274 |
275 | |
741
b72bcb7e08a2
Arbitrary headers in listtexts, fix default Content-Transfer-Encoding: header,
Ben Schmidt
parents:
738
diff
changeset
|
276 |