net-imap 0.5.4 → 0.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of net-imap might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/README.md +3 -1
- data/docs/styles.css +11 -1
- data/lib/net/imap/config.rb +73 -3
- data/lib/net/imap/data_lite.rb +11 -10
- data/lib/net/imap/fetch_data.rb +126 -47
- data/lib/net/imap/response_data.rb +116 -144
- data/lib/net/imap/response_parser.rb +41 -15
- data/lib/net/imap/sasl/anonymous_authenticator.rb +3 -3
- data/lib/net/imap/sasl/cram_md5_authenticator.rb +3 -3
- data/lib/net/imap/sasl/digest_md5_authenticator.rb +8 -8
- data/lib/net/imap/sasl/external_authenticator.rb +2 -2
- data/lib/net/imap/sasl/gs2_header.rb +7 -7
- data/lib/net/imap/sasl/login_authenticator.rb +2 -2
- data/lib/net/imap/sasl/oauthbearer_authenticator.rb +6 -6
- data/lib/net/imap/sasl/plain_authenticator.rb +7 -7
- data/lib/net/imap/sasl/scram_authenticator.rb +8 -8
- data/lib/net/imap/sasl.rb +1 -1
- data/lib/net/imap/search_result.rb +2 -2
- data/lib/net/imap/sequence_set.rb +193 -58
- data/lib/net/imap/stringprep/nameprep.rb +1 -1
- data/lib/net/imap/stringprep/trace.rb +4 -4
- data/lib/net/imap/uidplus_data.rb +244 -0
- data/lib/net/imap.rb +171 -101
- data/rakelib/rfcs.rake +1 -0
- metadata +4 -6
@@ -4,8 +4,12 @@ module Net
|
|
4
4
|
class IMAP < Protocol
|
5
5
|
autoload :ESearchResult, "#{__dir__}/esearch_result"
|
6
6
|
autoload :FetchData, "#{__dir__}/fetch_data"
|
7
|
+
autoload :UIDFetchData, "#{__dir__}/fetch_data"
|
7
8
|
autoload :SearchResult, "#{__dir__}/search_result"
|
8
9
|
autoload :SequenceSet, "#{__dir__}/sequence_set"
|
10
|
+
autoload :UIDPlusData, "#{__dir__}/uidplus_data"
|
11
|
+
autoload :AppendUIDData, "#{__dir__}/uidplus_data"
|
12
|
+
autoload :CopyUIDData, "#{__dir__}/uidplus_data"
|
9
13
|
autoload :VanishedData, "#{__dir__}/vanished_data"
|
10
14
|
|
11
15
|
# Net::IMAP::ContinuationRequest represents command continuation requests.
|
@@ -159,13 +163,20 @@ module Net
|
|
159
163
|
# The raw response data.
|
160
164
|
end
|
161
165
|
|
162
|
-
#
|
166
|
+
# ResponseText represents texts of responses.
|
163
167
|
#
|
164
168
|
# The text may be prefixed by a ResponseCode.
|
165
169
|
#
|
166
|
-
# ResponseText is returned from TaggedResponse#data
|
167
|
-
# UntaggedResponse#data
|
168
|
-
# "
|
170
|
+
# ResponseText is returned from TaggedResponse#data or
|
171
|
+
# UntaggedResponse#data for
|
172
|
+
# {"status responses"}[https://www.rfc-editor.org/rfc/rfc3501#section-7.1]:
|
173
|
+
# * every TaggedResponse, name[rdoc-ref:TaggedResponse#name] is always
|
174
|
+
# "+OK+", "+NO+", or "+BAD+".
|
175
|
+
# * any UntaggedResponse when name[rdoc-ref:UntaggedResponse#name] is
|
176
|
+
# "+OK+", "+NO+", "+BAD+", "+PREAUTH+", or "+BYE+".
|
177
|
+
#
|
178
|
+
# Note that these "status responses" are confusingly _not_ the same as the
|
179
|
+
# +STATUS+ UntaggedResponse (see IMAP#status and StatusData).
|
169
180
|
class ResponseText < Struct.new(:code, :text)
|
170
181
|
# Used to avoid an allocation when ResponseText is empty
|
171
182
|
EMPTY = new(nil, "").freeze
|
@@ -183,32 +194,35 @@ module Net
|
|
183
194
|
# Returns the response text, not including any response code
|
184
195
|
end
|
185
196
|
|
186
|
-
#
|
187
|
-
#
|
188
|
-
#
|
189
|
-
#
|
197
|
+
# ResponseCode represents an \IMAP response code, which can be retrieved
|
198
|
+
# from ResponseText#code for
|
199
|
+
# {"status responses"}[https://www.rfc-editor.org/rfc/rfc3501#section-7.1]:
|
200
|
+
# * every TaggedResponse, name[rdoc-ref:TaggedResponse#name] is always
|
201
|
+
# "+OK+", "+NO+", or "+BAD+".
|
202
|
+
# * any UntaggedResponse when name[rdoc-ref:UntaggedResponse#name] is
|
203
|
+
# "+OK+", "+NO+", "+BAD+", "+PREAUTH+", or "+BYE+".
|
204
|
+
#
|
205
|
+
# Note that these "status responses" are confusingly _not_ the same as the
|
206
|
+
# +STATUS+ UntaggedResponse (see IMAP#status and StatusData).
|
190
207
|
#
|
191
208
|
# Some response codes come with additional data which will be parsed by
|
192
209
|
# Net::IMAP. Others return +nil+ for #data, but are used as a
|
193
210
|
# machine-readable annotation for the human-readable ResponseText#text in
|
194
|
-
# the same response.
|
195
|
-
# code text, #data returns the unparsed string.
|
211
|
+
# the same response.
|
196
212
|
#
|
197
213
|
# Untagged response code #data is pushed directly onto Net::IMAP#responses,
|
198
214
|
# keyed by #name, unless it is removed by the command that generated it.
|
199
215
|
# Use Net::IMAP#add_response_handler to view tagged response codes for
|
200
216
|
# command methods that do not return their TaggedResponse.
|
201
217
|
#
|
218
|
+
# == Standard response codes
|
219
|
+
#
|
202
220
|
# \IMAP extensions may define new codes and the data that comes with them.
|
203
221
|
# The IANA {IMAP Response
|
204
222
|
# Codes}[https://www.iana.org/assignments/imap-response-codes/imap-response-codes.xhtml]
|
205
223
|
# registry has links to specifications for all standard response codes.
|
206
|
-
# Response codes are backwards compatible: Servers are allowed to send new
|
207
|
-
# response codes even if the client has not enabled the extension that
|
208
|
-
# defines them. When unknown response code data is encountered, #data
|
209
|
-
# will return an unparsed string.
|
210
224
|
#
|
211
|
-
#
|
225
|
+
# === +IMAP4rev1+ response codes
|
212
226
|
# See [IMAP4rev1[https://www.rfc-editor.org/rfc/rfc3501]] {§7.1, "Server
|
213
227
|
# Responses - Status
|
214
228
|
# Responses"}[https://www.rfc-editor.org/rfc/rfc3501#section-7.1] for full
|
@@ -239,24 +253,24 @@ module Net
|
|
239
253
|
# the <tt>\Seen</tt> flag set.
|
240
254
|
# <em>DEPRECATED by IMAP4rev2.</em>
|
241
255
|
#
|
242
|
-
#
|
256
|
+
# === +BINARY+ extension
|
243
257
|
# See {[RFC3516]}[https://www.rfc-editor.org/rfc/rfc3516].
|
244
258
|
# * +UNKNOWN-CTE+, with a tagged +NO+ response, when the server does not
|
245
259
|
# known how to decode a CTE (content-transfer-encoding). #data is +nil+.
|
246
260
|
# See IMAP#fetch.
|
247
261
|
#
|
248
|
-
#
|
262
|
+
# === +UIDPLUS+ extension
|
249
263
|
# See {[RFC4315 §3]}[https://www.rfc-editor.org/rfc/rfc4315#section-3].
|
250
264
|
# * +APPENDUID+, #data is UIDPlusData. See IMAP#append.
|
251
265
|
# * +COPYUID+, #data is UIDPlusData. See IMAP#copy.
|
252
266
|
# * +UIDNOTSTICKY+, #data is +nil+. See IMAP#select.
|
253
267
|
#
|
254
|
-
#
|
268
|
+
# === +SEARCHRES+ extension
|
255
269
|
# See {[RFC5182]}[https://www.rfc-editor.org/rfc/rfc5182].
|
256
270
|
# * +NOTSAVED+, with a tagged +NO+ response, when the search result variable
|
257
271
|
# is not saved. #data is +nil+.
|
258
272
|
#
|
259
|
-
#
|
273
|
+
# === +RFC5530+ response codes
|
260
274
|
# See {[RFC5530]}[https://www.rfc-editor.org/rfc/rfc5530], "IMAP Response
|
261
275
|
# Codes" for the definition of the following response codes, which are all
|
262
276
|
# machine-readable annotations for the human-readable ResponseText#text, and
|
@@ -279,22 +293,22 @@ module Net
|
|
279
293
|
# * +ALREADYEXISTS+
|
280
294
|
# * +NONEXISTENT+
|
281
295
|
#
|
282
|
-
#
|
296
|
+
# === +QRESYNC+ extension
|
283
297
|
# See {[RFC7162]}[https://www.rfc-editor.org/rfc/rfc7162.html].
|
284
298
|
# * +CLOSED+, returned when the currently selected mailbox is closed
|
285
299
|
# implicitly by selecting or examining another mailbox. #data is +nil+.
|
286
300
|
#
|
287
|
-
#
|
301
|
+
# === +IMAP4rev2+ response codes
|
288
302
|
# See {[RFC9051]}[https://www.rfc-editor.org/rfc/rfc9051] {§7.1, "Server
|
289
303
|
# Responses - Status
|
290
304
|
# Responses"}[https://www.rfc-editor.org/rfc/rfc9051#section-7.1] for full
|
291
305
|
# descriptions of IMAP4rev2 response codes. IMAP4rev2 includes all of the
|
292
|
-
# response codes listed above (except "UNSEEN") and adds the following:
|
306
|
+
# response codes listed above (except "+UNSEEN+") and adds the following:
|
293
307
|
# * +HASCHILDREN+, with a tagged +NO+ response, when a mailbox delete failed
|
294
308
|
# because the server doesn't allow deletion of mailboxes with children.
|
295
309
|
# #data is +nil+.
|
296
310
|
#
|
297
|
-
#
|
311
|
+
# === +CONDSTORE+ extension
|
298
312
|
# See {[RFC7162]}[https://www.rfc-editor.org/rfc/rfc7162.html].
|
299
313
|
# * +NOMODSEQ+, when selecting a mailbox that does not support
|
300
314
|
# mod-sequences. #data is +nil+. See IMAP#select.
|
@@ -304,10 +318,17 @@ module Net
|
|
304
318
|
# since the +UNCHANGEDSINCE+ mod-sequence given to +STORE+ or <tt>UID
|
305
319
|
# STORE</tt>.
|
306
320
|
#
|
307
|
-
#
|
321
|
+
# === +OBJECTID+ extension
|
308
322
|
# See {[RFC8474]}[https://www.rfc-editor.org/rfc/rfc8474.html].
|
309
323
|
# * +MAILBOXID+, #data is a string
|
310
324
|
#
|
325
|
+
# == Extension compatibility
|
326
|
+
#
|
327
|
+
# Response codes are backwards compatible: Servers are allowed to send new
|
328
|
+
# response codes even if the client has not enabled the extension that
|
329
|
+
# defines them. When Net::IMAP does not know how to parse response
|
330
|
+
# code text, #data returns the unparsed string.
|
331
|
+
#
|
311
332
|
class ResponseCode < Struct.new(:name, :data)
|
312
333
|
##
|
313
334
|
# method: name
|
@@ -326,64 +347,8 @@ module Net
|
|
326
347
|
# code data can take.
|
327
348
|
end
|
328
349
|
|
329
|
-
#
|
330
|
-
#
|
331
|
-
#
|
332
|
-
# See [[UIDPLUS[https://www.rfc-editor.org/rfc/rfc4315.html]].
|
333
|
-
#
|
334
|
-
# ==== Capability requirement
|
335
|
-
#
|
336
|
-
# The +UIDPLUS+ capability[rdoc-ref:Net::IMAP#capability] must be supported.
|
337
|
-
# A server that supports +UIDPLUS+ should send a UIDPlusData object inside
|
338
|
-
# every TaggedResponse returned by the append[rdoc-ref:Net::IMAP#append],
|
339
|
-
# copy[rdoc-ref:Net::IMAP#copy], move[rdoc-ref:Net::IMAP#move], {uid
|
340
|
-
# copy}[rdoc-ref:Net::IMAP#uid_copy], and {uid
|
341
|
-
# move}[rdoc-ref:Net::IMAP#uid_move] commands---unless the destination
|
342
|
-
# mailbox reports +UIDNOTSTICKY+.
|
343
|
-
#
|
344
|
-
#--
|
345
|
-
# TODO: support MULTIAPPEND
|
346
|
-
#++
|
347
|
-
#
|
348
|
-
class UIDPlusData < Struct.new(:uidvalidity, :source_uids, :assigned_uids)
|
349
|
-
##
|
350
|
-
# method: uidvalidity
|
351
|
-
# :call-seq: uidvalidity -> nonzero uint32
|
352
|
-
#
|
353
|
-
# The UIDVALIDITY of the destination mailbox.
|
354
|
-
|
355
|
-
##
|
356
|
-
# method: source_uids
|
357
|
-
# :call-seq: source_uids -> nil or an array of nonzero uint32
|
358
|
-
#
|
359
|
-
# The UIDs of the copied or moved messages.
|
360
|
-
#
|
361
|
-
# Note:: Returns +nil+ for Net::IMAP#append.
|
362
|
-
|
363
|
-
##
|
364
|
-
# method: assigned_uids
|
365
|
-
# :call-seq: assigned_uids -> an array of nonzero uint32
|
366
|
-
#
|
367
|
-
# The newly assigned UIDs of the copied, moved, or appended messages.
|
368
|
-
#
|
369
|
-
# Note:: This always returns an array, even when it contains only one UID.
|
370
|
-
|
371
|
-
##
|
372
|
-
# :call-seq: uid_mapping -> nil or a hash
|
373
|
-
#
|
374
|
-
# Returns a hash mapping each source UID to the newly assigned destination
|
375
|
-
# UID.
|
376
|
-
#
|
377
|
-
# Note:: Returns +nil+ for Net::IMAP#append.
|
378
|
-
def uid_mapping
|
379
|
-
source_uids&.zip(assigned_uids)&.to_h
|
380
|
-
end
|
381
|
-
end
|
382
|
-
|
383
|
-
# Net::IMAP::MailboxList represents contents of the LIST response,
|
384
|
-
# representing a single mailbox path.
|
385
|
-
#
|
386
|
-
# Net::IMAP#list returns an array of MailboxList objects.
|
350
|
+
# MailboxList represents the data of an untagged +LIST+ response, for a
|
351
|
+
# _single_ mailbox path. IMAP#list returns an array of MailboxList objects.
|
387
352
|
#
|
388
353
|
class MailboxList < Struct.new(:attr, :delim, :name)
|
389
354
|
##
|
@@ -393,11 +358,11 @@ module Net
|
|
393
358
|
# Returns the name attributes. Each name attribute is a symbol capitalized
|
394
359
|
# by String#capitalize, such as :Noselect (not :NoSelect). For the
|
395
360
|
# semantics of each attribute, see:
|
396
|
-
# *
|
397
|
-
# *
|
398
|
-
# * Net::IMAP@SPECIAL-USE
|
361
|
+
# * Net::IMAP@Basic+Mailbox+Attributes
|
362
|
+
# * Net::IMAP@Mailbox+role+Attributes
|
399
363
|
# * The IANA {IMAP Mailbox Name Attributes
|
400
364
|
# registry}[https://www.iana.org/assignments/imap-mailbox-name-attributes/imap-mailbox-name-attributes.xhtml]
|
365
|
+
# has links to specifications for all standard mailbox attributes.
|
401
366
|
|
402
367
|
##
|
403
368
|
# method: delim
|
@@ -412,16 +377,16 @@ module Net
|
|
412
377
|
# Returns the mailbox name.
|
413
378
|
end
|
414
379
|
|
415
|
-
#
|
416
|
-
# This object can also be a response to GETQUOTAROOT. In the syntax
|
417
|
-
# specification below, the delimiter used with the "#" construct is a
|
418
|
-
# single space (SPACE).
|
380
|
+
# MailboxQuota represents the data of an untagged +QUOTA+ response.
|
419
381
|
#
|
420
|
-
#
|
382
|
+
# IMAP#getquota returns an array of MailboxQuota objects.
|
421
383
|
#
|
422
384
|
# Net::IMAP#getquotaroot returns an array containing both MailboxQuotaRoot
|
423
385
|
# and MailboxQuota objects.
|
424
386
|
#
|
387
|
+
# == Required capability
|
388
|
+
# Requires +QUOTA+ [RFC2087[https://www.rfc-editor.org/rfc/rfc2087]]
|
389
|
+
# capability.
|
425
390
|
class MailboxQuota < Struct.new(:mailbox, :usage, :quota)
|
426
391
|
##
|
427
392
|
# method: mailbox
|
@@ -443,12 +408,14 @@ module Net
|
|
443
408
|
#
|
444
409
|
end
|
445
410
|
|
446
|
-
#
|
447
|
-
# response. (GETQUOTAROOT can also return Net::IMAP::MailboxQuota.)
|
411
|
+
# MailboxQuotaRoot represents the data of an untagged +QUOTAROOT+ response.
|
448
412
|
#
|
449
|
-
#
|
450
|
-
#
|
413
|
+
# IMAP#getquotaroot returns an array containing both MailboxQuotaRoot and
|
414
|
+
# MailboxQuota objects.
|
451
415
|
#
|
416
|
+
# == Required capability
|
417
|
+
# Requires +QUOTA+ [RFC2087[https://www.rfc-editor.org/rfc/rfc2087]]
|
418
|
+
# capability.
|
452
419
|
class MailboxQuotaRoot < Struct.new(:mailbox, :quotaroots)
|
453
420
|
##
|
454
421
|
# method: mailbox
|
@@ -463,12 +430,13 @@ module Net
|
|
463
430
|
# Zero or more quotaroots that affect the quota on the specified mailbox.
|
464
431
|
end
|
465
432
|
|
466
|
-
#
|
433
|
+
# MailboxACLItem represents the data of an untagged +ACL+ response.
|
467
434
|
#
|
468
|
-
#
|
435
|
+
# IMAP#getacl returns an array of MailboxACLItem objects.
|
469
436
|
#
|
470
|
-
#
|
471
|
-
# +ACL+
|
437
|
+
# == Required capability
|
438
|
+
# Requires +ACL+ [RFC4314[https://www.rfc-editor.org/rfc/rfc4314]]
|
439
|
+
# capability.
|
472
440
|
class MailboxACLItem < Struct.new(:user, :rights, :mailbox)
|
473
441
|
##
|
474
442
|
# method: mailbox
|
@@ -490,11 +458,12 @@ module Net
|
|
490
458
|
# The access rights the indicated #user has to the #mailbox.
|
491
459
|
end
|
492
460
|
|
493
|
-
#
|
494
|
-
#
|
495
|
-
#
|
496
|
-
# Returned by Net::IMAP#namespace, contained inside a Namespaces object.
|
461
|
+
# Namespace represents a _single_ namespace, contained inside a Namespaces
|
462
|
+
# object.
|
497
463
|
#
|
464
|
+
# == Required capability
|
465
|
+
# Requires either +NAMESPACE+ [RFC2342[https://www.rfc-editor.org/rfc/rfc2342]]
|
466
|
+
# or +IMAP4rev2+ capability.
|
498
467
|
class Namespace < Struct.new(:prefix, :delim, :extensions)
|
499
468
|
##
|
500
469
|
# method: prefix
|
@@ -516,11 +485,14 @@ module Net
|
|
516
485
|
# Extension parameter semantics would be defined by the extension.
|
517
486
|
end
|
518
487
|
|
519
|
-
#
|
520
|
-
#
|
488
|
+
# Namespaces represents the data of an untagged +NAMESPACE+ response,
|
489
|
+
# returned by IMAP#namespace.
|
521
490
|
#
|
522
|
-
#
|
491
|
+
# Contains lists of #personal, #shared, and #other namespaces.
|
523
492
|
#
|
493
|
+
# == Required capability
|
494
|
+
# Requires either +NAMESPACE+ [RFC2342[https://www.rfc-editor.org/rfc/rfc2342]]
|
495
|
+
# or +IMAP4rev2+ capability.
|
524
496
|
class Namespaces < Struct.new(:personal, :other, :shared)
|
525
497
|
##
|
526
498
|
# method: personal
|
@@ -541,9 +513,9 @@ module Net
|
|
541
513
|
# Returns an array of Shared Namespace objects.
|
542
514
|
end
|
543
515
|
|
544
|
-
#
|
516
|
+
# StatusData represents the contents of an untagged +STATUS+ response.
|
545
517
|
#
|
546
|
-
#
|
518
|
+
# IMAP#status returns the contents of #attr.
|
547
519
|
class StatusData < Struct.new(:mailbox, :attr)
|
548
520
|
##
|
549
521
|
# method: mailbox
|
@@ -564,11 +536,11 @@ module Net
|
|
564
536
|
# [Note]
|
565
537
|
# When the #sender and #reply_to fields are absent or empty, they will
|
566
538
|
# return the same value as #from. Also, fields may return values that are
|
567
|
-
# invalid for well-formed [RFC5322[https://
|
539
|
+
# invalid for well-formed [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]]
|
568
540
|
# messages when the message is malformed or a draft message.
|
569
541
|
#
|
570
|
-
# See [{IMAP4rev1 §7.4.2}[https://www.rfc-editor.org/rfc/rfc3501
|
571
|
-
# and [{IMAP4rev2 §7.5.2}[https://www.rfc-editor.org/rfc/rfc9051
|
542
|
+
# See [{IMAP4rev1 §7.4.2}[https://www.rfc-editor.org/rfc/rfc3501#section-7.4.2]]
|
543
|
+
# and [{IMAP4rev2 §7.5.2}[https://www.rfc-editor.org/rfc/rfc9051#section-7.5.2]]
|
572
544
|
# for full description of the envelope fields, and
|
573
545
|
# Net::IMAP@Message+envelope+and+body+structure for other relevant RFCs.
|
574
546
|
#
|
@@ -582,7 +554,7 @@ module Net
|
|
582
554
|
# Returns a string that represents the +Date+ header.
|
583
555
|
#
|
584
556
|
# [Note]
|
585
|
-
# For a well-formed [RFC5322[https://
|
557
|
+
# For a well-formed [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]]
|
586
558
|
# message, the #date field must not be +nil+. However it can be +nil+
|
587
559
|
# for a malformed or draft message.
|
588
560
|
|
@@ -608,7 +580,7 @@ module Net
|
|
608
580
|
# returns +nil+ for this envelope field.
|
609
581
|
#
|
610
582
|
# [Note]
|
611
|
-
# For a well-formed [RFC5322[https://
|
583
|
+
# For a well-formed [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]]
|
612
584
|
# message, the #from field must not be +nil+. However it can be +nil+
|
613
585
|
# for a malformed or draft message.
|
614
586
|
|
@@ -621,7 +593,7 @@ module Net
|
|
621
593
|
# [Note]
|
622
594
|
# If the <tt>Sender</tt> header is absent, or is present but empty, the
|
623
595
|
# server sets this field to be the same value as #from. Therefore, in a
|
624
|
-
# well-formed [RFC5322[https://
|
596
|
+
# well-formed [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]] message,
|
625
597
|
# the #sender envelope field must not be +nil+. However it can be
|
626
598
|
# +nil+ for a malformed or draft message.
|
627
599
|
|
@@ -635,7 +607,7 @@ module Net
|
|
635
607
|
# [Note]
|
636
608
|
# If the <tt>Reply-To</tt> header is absent, or is present but empty,
|
637
609
|
# the server sets this field to be the same value as #from. Therefore,
|
638
|
-
# in a well-formed [RFC5322[https://
|
610
|
+
# in a well-formed [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]]
|
639
611
|
# message, the #reply_to envelope field must not be +nil+. However it
|
640
612
|
# can be +nil+ for a malformed or draft message.
|
641
613
|
|
@@ -664,7 +636,7 @@ module Net
|
|
664
636
|
# Returns a string that represents the <tt>In-Reply-To</tt> header.
|
665
637
|
#
|
666
638
|
# [Note]
|
667
|
-
# For a well-formed [RFC5322[https://
|
639
|
+
# For a well-formed [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]]
|
668
640
|
# message, the #in_reply_to field, if present, must not be empty. But
|
669
641
|
# it can still return an empty string for malformed messages.
|
670
642
|
#
|
@@ -680,7 +652,7 @@ module Net
|
|
680
652
|
# Returns a string that represents the <tt>Message-ID</tt>.
|
681
653
|
#
|
682
654
|
# [Note]
|
683
|
-
# For a well-formed [RFC5322[https://
|
655
|
+
# For a well-formed [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]]
|
684
656
|
# message, the #message_id field, if present, must not be empty. But it
|
685
657
|
# can still return an empty string for malformed messages.
|
686
658
|
#
|
@@ -694,10 +666,10 @@ module Net
|
|
694
666
|
# parsed into its component parts by the server. Address objects are
|
695
667
|
# returned within Envelope fields.
|
696
668
|
#
|
697
|
-
#
|
669
|
+
# == Group syntax
|
698
670
|
#
|
699
671
|
# When the #host field is +nil+, this is a special form of address structure
|
700
|
-
# that indicates the [RFC5322[https://
|
672
|
+
# that indicates the [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]] group
|
701
673
|
# syntax. If the #mailbox name field is also +nil+, this is an end-of-group
|
702
674
|
# marker (semicolon in RFC-822 syntax). If the #mailbox name field is
|
703
675
|
# non-+NIL+, this is the start of a group marker, and the mailbox #name
|
@@ -707,7 +679,7 @@ module Net
|
|
707
679
|
# method: name
|
708
680
|
# :call-seq: name -> string or nil
|
709
681
|
#
|
710
|
-
# Returns the [RFC5322[https://
|
682
|
+
# Returns the [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]] address
|
711
683
|
# +display-name+ (or the mailbox +phrase+ in the RFC-822 grammar).
|
712
684
|
|
713
685
|
##
|
@@ -717,28 +689,28 @@ module Net
|
|
717
689
|
# Returns the route from RFC-822 route-addr.
|
718
690
|
#
|
719
691
|
# Note:: Generating this obsolete route addressing syntax is not allowed
|
720
|
-
# by [RFC5322[https://
|
692
|
+
# by [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]]. However,
|
721
693
|
# addresses with this syntax must still be accepted and parsed.
|
722
694
|
|
723
695
|
##
|
724
696
|
# method: mailbox
|
725
697
|
# :call-seq: mailbox -> string or nil
|
726
698
|
#
|
727
|
-
# Returns the [RFC5322[https://
|
699
|
+
# Returns the [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]] address
|
728
700
|
# +local-part+, if #host is not +nil+.
|
729
701
|
#
|
730
702
|
# When #host is +nil+, this returns
|
731
|
-
# an [RFC5322[https://
|
703
|
+
# an [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]] group name and a +nil+
|
732
704
|
# mailbox indicates the end of a group.
|
733
705
|
|
734
706
|
##
|
735
707
|
# method: host
|
736
708
|
# :call-seq: host -> string or nil
|
737
709
|
#
|
738
|
-
# Returns the [RFC5322[https://
|
710
|
+
# Returns the [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]] addr-spec
|
739
711
|
# +domain+ name.
|
740
712
|
#
|
741
|
-
# +nil+ indicates [RFC5322[https://
|
713
|
+
# +nil+ indicates [RFC5322[https://www.rfc-editor.org/rfc/rfc5322]] group
|
742
714
|
# syntax.
|
743
715
|
end
|
744
716
|
|
@@ -750,14 +722,14 @@ module Net
|
|
750
722
|
# :call-seq: dsp_type -> string
|
751
723
|
#
|
752
724
|
# Returns the content disposition type, as defined by
|
753
|
-
# [DISPOSITION[https://
|
725
|
+
# [DISPOSITION[https://www.rfc-editor.org/rfc/rfc2183]].
|
754
726
|
|
755
727
|
##
|
756
728
|
# method: param
|
757
729
|
# :call-seq: param -> hash
|
758
730
|
#
|
759
731
|
# Returns a hash representing parameters of the Content-Disposition
|
760
|
-
# field, as defined by [DISPOSITION[https://
|
732
|
+
# field, as defined by [DISPOSITION[https://www.rfc-editor.org/rfc/rfc2183]].
|
761
733
|
end
|
762
734
|
|
763
735
|
# Net::IMAP::ThreadMember represents a thread-node returned
|
@@ -796,12 +768,12 @@ module Net
|
|
796
768
|
# FetchData#attr value. Although these classes don't share a base class,
|
797
769
|
# this module can be used to pattern match all of them.
|
798
770
|
#
|
799
|
-
# See {[IMAP4rev1] §7.4.2}[https://www.rfc-editor.org/rfc/rfc3501
|
800
|
-
# and {[IMAP4rev2] §7.5.2}[https://www.rfc-editor.org/rfc/rfc9051
|
771
|
+
# See {[IMAP4rev1] §7.4.2}[https://www.rfc-editor.org/rfc/rfc3501#section-7.4.2]
|
772
|
+
# and {[IMAP4rev2] §7.5.2}[https://www.rfc-editor.org/rfc/rfc9051#section-7.5.2-4.9]
|
801
773
|
# for full description of all +BODYSTRUCTURE+ fields, and also
|
802
774
|
# Net::IMAP@Message+envelope+and+body+structure for other relevant RFCs.
|
803
775
|
#
|
804
|
-
#
|
776
|
+
# == Classes that include BodyStructure
|
805
777
|
# BodyTypeBasic:: Represents any message parts that are not handled by
|
806
778
|
# BodyTypeText, BodyTypeMessage, or BodyTypeMultipart.
|
807
779
|
# BodyTypeText:: Used by <tt>text/*</tt> parts. Contains all of the
|
@@ -819,8 +791,8 @@ module Net
|
|
819
791
|
# message parts, unless they have a <tt>Content-Type</tt> that is handled by
|
820
792
|
# BodyTypeText, BodyTypeMessage, or BodyTypeMultipart.
|
821
793
|
#
|
822
|
-
# See {[IMAP4rev1] §7.4.2}[https://www.rfc-editor.org/rfc/rfc3501
|
823
|
-
# and {[IMAP4rev2] §7.5.2}[https://www.rfc-editor.org/rfc/rfc9051
|
794
|
+
# See {[IMAP4rev1] §7.4.2}[https://www.rfc-editor.org/rfc/rfc3501#section-7.4.2]
|
795
|
+
# and {[IMAP4rev2] §7.5.2}[https://www.rfc-editor.org/rfc/rfc9051#section-7.5.2-4.9]
|
824
796
|
# for full description of all +BODYSTRUCTURE+ fields, and also
|
825
797
|
# Net::IMAP@Message+envelope+and+body+structure for other relevant RFCs.
|
826
798
|
#
|
@@ -837,45 +809,45 @@ module Net
|
|
837
809
|
# :call-seq: media_type -> string
|
838
810
|
#
|
839
811
|
# The top-level media type as defined in
|
840
|
-
# [MIME-IMB[https://
|
812
|
+
# [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]].
|
841
813
|
|
842
814
|
##
|
843
815
|
# method: subtype
|
844
816
|
# :call-seq: subtype -> string
|
845
817
|
#
|
846
818
|
# The media subtype name as defined in
|
847
|
-
# [MIME-IMB[https://
|
819
|
+
# [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]].
|
848
820
|
|
849
821
|
##
|
850
822
|
# method: param
|
851
823
|
# :call-seq: param -> string
|
852
824
|
#
|
853
825
|
# Returns a hash that represents parameters as defined in
|
854
|
-
# [MIME-IMB[https://
|
826
|
+
# [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]].
|
855
827
|
|
856
828
|
##
|
857
829
|
# method: content_id
|
858
830
|
# :call-seq: content_id -> string
|
859
831
|
#
|
860
832
|
# Returns a string giving the content id as defined
|
861
|
-
# in [MIME-IMB[https://
|
862
|
-
# {§7}[https://
|
833
|
+
# in [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]]
|
834
|
+
# {§7}[https://www.rfc-editor.org/rfc/rfc2045#section-7].
|
863
835
|
|
864
836
|
##
|
865
837
|
# method: description
|
866
838
|
# :call-seq: description -> string
|
867
839
|
#
|
868
840
|
# Returns a string giving the content description as defined
|
869
|
-
# in [MIME-IMB[https://
|
870
|
-
# {§8}[https://
|
841
|
+
# in [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]]
|
842
|
+
# {§8}[https://www.rfc-editor.org/rfc/rfc2045#section-8].
|
871
843
|
|
872
844
|
##
|
873
845
|
# method: encoding
|
874
846
|
# :call-seq: encoding -> string
|
875
847
|
#
|
876
848
|
# Returns a string giving the content transfer encoding as defined
|
877
|
-
# in [MIME-IMB[https://
|
878
|
-
# {§6}[https://
|
849
|
+
# in [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]]
|
850
|
+
# {§6}[https://www.rfc-editor.org/rfc/rfc2045#section-6].
|
879
851
|
|
880
852
|
##
|
881
853
|
# method: size
|
@@ -888,7 +860,7 @@ module Net
|
|
888
860
|
# :call-seq: md5 -> string
|
889
861
|
#
|
890
862
|
# Returns a string giving the body MD5 value as defined in
|
891
|
-
# [MD5[https://
|
863
|
+
# [MD5[https://www.rfc-editor.org/rfc/rfc1864]].
|
892
864
|
|
893
865
|
##
|
894
866
|
# method: disposition
|
@@ -896,7 +868,7 @@ module Net
|
|
896
868
|
#
|
897
869
|
# Returns a ContentDisposition object giving the content
|
898
870
|
# disposition, as defined by
|
899
|
-
# [DISPOSITION[https://
|
871
|
+
# [DISPOSITION[https://www.rfc-editor.org/rfc/rfc2183]].
|
900
872
|
|
901
873
|
##
|
902
874
|
# method: language
|
@@ -1064,7 +1036,7 @@ module Net
|
|
1064
1036
|
# call-seq: subtype -> string
|
1065
1037
|
#
|
1066
1038
|
# Returns the content subtype name
|
1067
|
-
# as defined in [MIME-IMB[https://
|
1039
|
+
# as defined in [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]].
|
1068
1040
|
|
1069
1041
|
##
|
1070
1042
|
# method: parts
|
@@ -1078,7 +1050,7 @@ module Net
|
|
1078
1050
|
# call-seq: param -> hash
|
1079
1051
|
#
|
1080
1052
|
# Returns a hash that represents parameters
|
1081
|
-
# as defined in [MIME-IMB[https://
|
1053
|
+
# as defined in [MIME-IMB[https://www.rfc-editor.org/rfc/rfc2045]].
|
1082
1054
|
|
1083
1055
|
##
|
1084
1056
|
# method: disposition
|