1mime(n) Mime mime(n)
2
3
4
5______________________________________________________________________________
6
8 mime - Manipulation of MIME body parts
9
11 package require Tcl
12
13 package require mime ?1.5.1?
14
15 ::mime::initialize ?-canonical type/subtype ?-param {key value}...?
16 ?-encoding value? ?-header {key value}...?? (-file name | -string value
17 | -part {token1 ... tokenN})
18
19 ::mime::finalize token ?-subordinates all | dynamic | none?
20
21 ::mime::getproperty token ?property | -names?
22
23 ::mime::getheader token ?key | -names?
24
25 ::mime::setheader token key value ?-mode write | append | delete?
26
27 ::mime::getbody token ?-decode? ?-command callback ?-blocksize octets??
28
29 ::mime::copymessage token channel
30
31 ::mime::buildmessage token
32
33 ::mime::parseaddress string
34
35 ::mime::parsedatetime (string | -now) property
36
37 ::mime::mapencoding encoding_name
38
39 ::mime::reversemapencoding charset_type
40
41_________________________________________________________________
42
44 The mime library package provides the commands to create and manipulate
45 MIME body parts.
46
47 ::mime::initialize ?-canonical type/subtype ?-param {key value}...?
48 ?-encoding value? ?-header {key value}...?? (-file name | -string value
49 | -part {token1 ... tokenN})
50 This command creates a MIME part and returns a token represent‐
51 ing it.
52
53 · If the -canonical option is present, then the body is in
54 canonical (raw) form and is found by consulting either
55 the -file, -string, or -part option.
56
57 In addition, both the -param and -header options may
58 occur zero or more times to specify Content-Type parame‐
59 ters (e.g., charset) and header keyword/values (e.g.,
60 Content-Disposition), respectively.
61
62 Also, -encoding, if present, specifies the Content-Trans‐
63 fer-Encoding when copying the body.
64
65 · If the -canonical option is not present, then the MIME
66 part contained in either the -file or the -string option
67 is parsed, dynamically generating subordinates as appro‐
68 priate.
69
70 ::mime::finalize token ?-subordinates all | dynamic | none?
71 This command destroys the MIME part represented by token. It
72 returns an empty string.
73
74 If the -subordinates option is present, it specifies which sub‐
75 ordinates should also be destroyed. The default value is
76 dynamic, destroying all subordinates which were created by
77 ::mime::initialize together with the containing body part.
78
79 ::mime::getproperty token ?property | -names?
80 This command returns a string or a list of strings containing
81 the properties of a MIME part. If the command is invoked with
82 the name of a specific property, then the corresponding value is
83 returned; instead, if -names is specified, a list of all proper‐
84 ties is returned; otherwise, a serialized array of properties
85 and values is returned.
86
87 The possible properties are:
88
89 content
90 The type/subtype describing the content
91
92 encoding
93 The "Content-Transfer-Encoding"
94
95 params A list of "Content-Type" parameters
96
97 parts A list of tokens for the part's subordinates. This prop‐
98 erty is present only if the MIME part has subordinates.
99
100 size The approximate size of the content (unencoded)
101
102 ::mime::getheader token ?key | -names?
103 This command returns the header of a MIME part, as a list of
104 strings.
105
106 A header consists of zero or more key/value pairs. Each value is
107 a list containing one or more strings.
108
109 If this command is invoked with the name of a specific key, then
110 a list containing the corresponding value(s) is returned;
111 instead, if -names is specified, a list of all keys is returned;
112 otherwise, a serialized array of keys and values is returned.
113 Note that when a key is specified (e.g., "Subject"), the list
114 returned usually contains exactly one string; however, some keys
115 (e.g., "Received") often occur more than once in the header,
116 accordingly the list returned usually contains more than one
117 string.
118
119 ::mime::setheader token key value ?-mode write | append | delete?
120 This command writes, appends to, or deletes the value associated
121 with a key in the header. It returns a list of strings contain‐
122 ing the previous value associated with the key.
123
124 The value for -mode is one of:
125
126 write The key/value is either created or overwritten (the
127 default).
128
129 append A new value is appended for the key (creating it as nec‐
130 essary).
131
132 delete All values associated with the key are removed (the value
133 parameter is ignored).
134
135 ::mime::getbody token ?-decode? ?-command callback ?-blocksize octets??
136 This command returns a string containing the body of the leaf
137 MIME part represented by token in canonical form.
138
139 If the -command option is present, then it is repeatedly invoked
140 with a fragment of the body as this:
141
142 uplevel #0 $callback [list "data" $fragment]
143
144
145 (The -blocksize option, if present, specifies the maximum size
146 of each fragment passed to the callback.)
147
148 When the end of the body is reached, the callback is invoked as:
149
150 uplevel #0 $callback "end"
151
152
153 Alternatively, if an error occurs, the callback is invoked as:
154
155 uplevel #0 $callback [list "error" reason]
156
157
158 Regardless, the return value of the final invocation of the
159 callback is propagated upwards by ::mime::getbody.
160
161 If the -command option is absent, then the return value of
162 ::mime::getbody is a string containing the MIME part's entire
163 body.
164
165 If the option -decode is absent the return value computed above
166 is returned as is. This means that it will be in the charset
167 specified for the token and not the usual utf-8. If the option
168 -decode is present however the command will use the charset
169 information associated with the token to convert the string from
170 its encoding into utf-8 before returning it.
171
172 ::mime::copymessage token channel
173 This command copies the MIME represented by token part to the
174 specified channel. The command operates synchronously, and uses
175 fileevent to allow asynchronous operations to proceed indepen‐
176 dently. It returns an empty string.
177
178 ::mime::buildmessage token
179 This command returns the MIME part represented by token as a
180 string. It is similar to ::mime::copymessage, only it returns
181 the data as a return string instead of writing to a channel.
182
183 ::mime::parseaddress string
184 This command takes a string containing one or more 822-style
185 address specifications and returns a list of serialized arrays,
186 one element for each address specified in the argument. If the
187 string contains more than one address they will be separated by
188 commas.
189
190 Each serialized array contains the properties below. Note that
191 one or more of these properties may be empty.
192
193 address
194 local@domain
195
196 comment
197 822-style comment
198
199 domain the domain part (rhs)
200
201 error non-empty on a parse error
202
203 group this address begins a group
204
205 friendly
206 user-friendly rendering
207
208 local the local part (lhs)
209
210 memberP
211 this address belongs to a group
212
213 phrase the phrase part
214
215 proper 822-style address specification
216
217 route 822-style route specification (obsolete)
218
219 ::mime::parsedatetime (string | -now) property
220 This command takes a string containing an 822-style date-time
221 specification and returns the specified property as a serialized
222 array.
223
224 The list of properties and their ranges are:
225
226 hour 0 .. 23
227
228 lmonth January, February, ..., December
229
230 lweekday
231 Sunday, Monday, ... Saturday
232
233 mday 1 .. 31
234
235 min 0 .. 59
236
237 mon 1 .. 12
238
239 month Jan, Feb, ..., Dec
240
241 proper 822-style date-time specification
242
243 rclock elapsed seconds between then and now
244
245 sec 0 .. 59
246
247 wday 0 .. 6 (Sun .. Mon)
248
249 weekday
250 Sun, Mon, ..., Sat
251
252 yday 1 .. 366
253
254 year 1900 ...
255
256 zone -720 .. 720 (minutes east of GMT)
257
258 ::mime::mapencoding encoding_name
259 This commansd maps tcl encodings onto the proper names for their
260 MIME charset type. This is only done for encodings whose
261 charset types were known. The remaining encodings return "" for
262 now.
263
264 ::mime::reversemapencoding charset_type
265 This command maps MIME charset types onto tcl encoding names.
266 Those that are unknown return "".
267
269 SourceForge Tcllib Bug #447037
270 This problem affects only people which are using Tcl and Mime on
271 a 64-bit system. The currently recommended fix for this problem
272 is to upgrade to Tcl version 8.4. This version has extended 64
273 bit support and the bug does not appear anymore.
274
275 The problem could have been generally solved by requiring the
276 use of Tcl 8.4 for this package. We decided against this solu‐
277 tion as it would force a large number of unaffected users to
278 upgrade their Tcl interpreter for no reason.
279
280 See http://source‐
281 forge.net/tracker/?func=detail&aid=447037&group_id=12883&atid=112883
282 for additional information.
283
285 ftp, http, pop3, smtp
286
288 email, internet, mail, mime, net, rfc 2045, rfc 2046, rfc 2049, rfc
289 821, rfc 822, smtp
290
292 Copyright (c) 1999-2000 Marshall T. Rose
293
294
295
296
297mime 1.5.1 mime(n)