Class: TMail::Mail
- Inherits:
-
Object
show all
- Includes:
- StrategyInterface, TextUtils
- Defined in:
- lib/tmail-pure/obsolete.rb,
lib/tmail-pure/net.rb,
lib/tmail-pure/mail.rb,
lib/tmail-pure/obsolete.rb
Overview
Constant Summary
collapse
- NOSEND_FIELDS =
%w(
received
bcc
)
- ALLOW_MULTIPLE =
{
'received' => true,
'resent-date' => true,
'resent-from' => true,
'resent-sender' => true,
'resent-to' => true,
'resent-cc' => true,
'resent-bcc' => true,
'resent-message-id' => true,
'comments' => true,
'keywords' => true
}
- USE_ARRAY =
ALLOW_MULTIPLE
- FIELD_ORDER =
%w(
return-path received
resent-date resent-from resent-sender resent-to
resent-cc resent-bcc resent-message-id
date from sender reply-to to cc bcc
message-id in-reply-to references
subject comments keywords
mime-version content-type content-transfer-encoding
content-disposition content-description
)
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
-
#[](key) ⇒ Object
(also: #fetch)
-
#[]=(key, val) ⇒ Object
(also: #store)
-
#accept(strategy) ⇒ Object
-
#add_date ⇒ Object
-
#add_message_id(fqdn = nil) ⇒ Object
-
#base64_decode ⇒ Object
-
#base64_encode ⇒ Object
-
#bcc(default = nil) ⇒ Object
-
#bcc=(*strs) ⇒ Object
-
#bcc_addrs(default = nil) ⇒ Object
-
#bcc_addrs=(arg) ⇒ Object
-
#body ⇒ Object
(also: #preamble)
-
#body=(str) ⇒ Object
(also: #preamble=)
-
#body_port ⇒ Object
-
#cc(default = nil) ⇒ Object
-
#cc=(*strs) ⇒ Object
-
#cc_addrs(default = nil) ⇒ Object
-
#cc_addrs=(arg) ⇒ Object
-
#charset(default = nil) ⇒ Object
-
#charset=(str) ⇒ Object
-
#clear ⇒ Object
-
#content_type(default = nil) ⇒ Object
-
#create_empty_mail ⇒ Object
-
#create_forward ⇒ Object
-
#create_reply ⇒ Object
-
#date(default = nil) ⇒ Object
-
#date=(time) ⇒ Object
-
#delete(key) ⇒ Object
-
#delete_if ⇒ Object
-
#delete_no_send_fields ⇒ Object
-
#destinations(default = nil) ⇒ Object
-
#disposition(default = nil) ⇒ Object
(also: #content_disposition)
-
#disposition_param(name, default = nil) ⇒ Object
-
#each(&block) ⇒ Object
-
#each_destination(&block) ⇒ Object
(also: #each_dest)
-
#each_field(&block) ⇒ Object
(also: #each_value)
-
#each_header ⇒ Object
(also: #each_pair)
-
#each_header_name(&block) ⇒ Object
(also: #each_key)
-
#each_part(&block) ⇒ Object
-
#epilogue ⇒ Object
-
#epilogue=(str) ⇒ Object
-
#error_reply_addresses(default = nil) ⇒ Object
-
#friendly_from(default = nil) ⇒ Object
-
#from(default = nil) ⇒ Object
-
#from=(*strs) ⇒ Object
-
#from_addr(default = nil) ⇒ Object
-
#from_address(default = nil) ⇒ Object
-
#from_addrs(default = nil) ⇒ Object
-
#from_addrs=(arg) ⇒ Object
(also: #from_address=)
-
#from_phrase(default = nil) ⇒ Object
-
#header ⇒ Object
-
#header_string(name, default = nil) ⇒ Object
-
#in_reply_to(default = nil) ⇒ Object
-
#in_reply_to=(*idstrs) ⇒ Object
-
#initialize(port = nil, conf = DEFAULT_CONFIG) ⇒ Mail
constructor
-
#inspect ⇒ Object
-
#key?(key) ⇒ Boolean
(also: #include?, #has_key?)
-
#keys ⇒ Object
-
#main_type(default = nil) ⇒ Object
-
#message_id(default = nil) ⇒ Object
(also: #msgid)
-
#message_id=(str) ⇒ Object
(also: #msgid=)
-
#mime_encode ⇒ Object
-
#mime_encode_binary(body) ⇒ Object
-
#mime_encode_multipart(top = true) ⇒ Object
-
#mime_encode_singlepart ⇒ Object
-
#mime_encode_text(body) ⇒ Object
-
#mime_version(default = nil) ⇒ Object
-
#mime_version=(m, opt = nil) ⇒ Object
-
#multipart? ⇒ Boolean
-
#ordered_each ⇒ Object
-
#parts ⇒ Object
-
#ready_to_send ⇒ Object
-
#references(default = nil) ⇒ Object
-
#references=(*strs) ⇒ Object
-
#reply_addresses(default = nil) ⇒ Object
-
#reply_to(default = nil) ⇒ Object
-
#reply_to=(*strs) ⇒ Object
-
#reply_to_addrs(default = nil) ⇒ Object
-
#reply_to_addrs=(arg) ⇒ Object
-
#send_text_to(smtp) ⇒ Object
-
#send_to(smtp) ⇒ Object
-
#send_to_0(smtp, from, to) ⇒ Object
-
#sender(default) ⇒ Object
-
#sender=(str) ⇒ Object
-
#sender_addr(default = nil) ⇒ Object
-
#sender_addr=(addr) ⇒ Object
-
#set_content_type(str, sub = nil, param = nil) ⇒ Object
(also: #content_type=)
-
#set_disposition(pos, params = nil) ⇒ Object
(also: #disposition=, #set_content_disposition, #content_disposition=)
-
#setup_forward(mail) ⇒ Object
-
#setup_reply(m) ⇒ Object
-
#strftime(fmt, default = nil) ⇒ Object
-
#sub_type(default = nil) ⇒ Object
-
#subject(default = nil) ⇒ Object
-
#subject=(str) ⇒ Object
-
#to(default = nil) ⇒ Object
-
#to=(*strs) ⇒ Object
-
#to_addrs(default = nil) ⇒ Object
-
#to_addrs=(arg) ⇒ Object
-
#transfer_encoding(default = nil) ⇒ Object
(also: #encoding, #content_transfer_encoding)
-
#transfer_encoding=(str) ⇒ Object
(also: #encoding=, #content_transfer_encoding=)
-
#type_param(name, default = nil) ⇒ Object
-
#value?(val) ⇒ Boolean
(also: #has_value?)
-
#values ⇒ Object
-
#values_at(*args) ⇒ Object
(also: #indexes, #indices)
-
#write_back(eol = "\n", charset = 'e') ⇒ Object
#accept_strategy, create_dest, #decoded, #encoded
Constructor Details
#initialize(port = nil, conf = DEFAULT_CONFIG) ⇒ Mail
Returns a new instance of Mail.
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/tmail-pure/mail.rb', line 32
def initialize(port = nil, conf = DEFAULT_CONFIG)
@port = port || StringPort.new
@config = Config.to_config(conf)
@header = {}
@body_port = nil
@body_parsed = false
@epilogue = ''
@parts = []
@port.ropen {|f|
f
parse_body f unless @port.reproducible?
}
end
|
Instance Attribute Details
#port ⇒ Object
Returns the value of attribute port.
48
49
50
|
# File 'lib/tmail-pure/mail.rb', line 48
def port
@port
end
|
Class Method Details
.boundary ⇒ Object
115
116
117
|
# File 'lib/tmail-pure/obsolete.rb', line 115
def Mail.boundary
::TMail.new_boundary
end
|
.load(fname) ⇒ Object
Also known as:
loadfrom, load_from
24
25
26
|
# File 'lib/tmail-pure/mail.rb', line 24
def Mail.load(fname)
new(FilePort.new(fname))
end
|
.parse(str) ⇒ Object
28
29
30
|
# File 'lib/tmail-pure/mail.rb', line 28
def Mail.parse(str)
new(StringPort.new(str))
end
|
Instance Method Details
#[](key) ⇒ Object
Also known as:
fetch
592
593
594
|
# File 'lib/tmail-pure/mail.rb', line 592
def [](key)
@header[key.downcase]
end
|
#[]=(key, val) ⇒ Object
Also known as:
store
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
|
# File 'lib/tmail-pure/mail.rb', line 598
def []=(key, val)
dkey = key.downcase
if val.nil?
@header.delete dkey
return nil
end
case val
when String
= new_hf(key, val)
when HeaderField
;
when Array
raise BadMessage, "multiple #{key}: header fields exist"\
unless ALLOW_MULTIPLE.include?(dkey)
@header[dkey] = val
return val
else
= new_hf(key, val.to_s)
end
if ALLOW_MULTIPLE.include? dkey
(@header[dkey] ||= []).push
else
@header[dkey] =
end
val
end
|
#accept(strategy) ⇒ Object
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/tmail-pure/mail.rb', line 69
def accept(strategy)
with_multipart_encoding(strategy) {
ordered_each do |name, field|
next if field.empty?
strategy. canonical(name)
field.accept strategy
strategy.puts
end
strategy.puts
body_port().ropen {|r|
strategy.write r.read
}
}
end
|
#add_date ⇒ Object
66
67
68
|
# File 'lib/tmail-pure/net.rb', line 66
def add_date
self.date = Time.now
end
|
#add_message_id(fqdn = nil) ⇒ Object
62
63
64
|
# File 'lib/tmail-pure/net.rb', line 62
def add_message_id(fqdn = nil)
self.message_id = ::TMail::new_msgid(fqdn)
end
|
#base64_decode ⇒ Object
163
164
165
166
167
168
|
# File 'lib/tmail-pure/mail.rb', line 163
def base64_decode
if /base64/i =~ self.transfer_encoding('')
store 'Content-Transfer-Encoding', '8bit'
self.body = Base64.decode(self.body, @config.strict_base64decode?)
end
end
|
#base64_encode ⇒ Object
158
159
160
161
|
# File 'lib/tmail-pure/mail.rb', line 158
def base64_encode
store 'Content-Transfer-Encoding', 'Base64'
self.body = Base64.folding_encode(self.body)
end
|
#bcc(default = nil) ⇒ Object
259
260
261
|
# File 'lib/tmail-pure/mail.rb', line 259
def bcc(default = nil)
addrs2specs(bcc_addrs(nil)) || default
end
|
#bcc=(*strs) ⇒ Object
271
272
273
|
# File 'lib/tmail-pure/mail.rb', line 271
def bcc=(*strs)
set_string_array_attr 'Bcc', strs
end
|
#bcc_addrs(default = nil) ⇒ Object
234
235
236
237
|
# File 'lib/tmail-pure/mail.rb', line 234
def bcc_addrs(default = nil)
h = @header['bcc'] or return default
h.addrs
end
|
#bcc_addrs=(arg) ⇒ Object
247
248
249
|
# File 'lib/tmail-pure/mail.rb', line 247
def bcc_addrs=(arg)
set_addrfield 'bcc', arg
end
|
#body ⇒ Object
Also known as:
preamble
767
768
769
770
771
772
|
# File 'lib/tmail-pure/mail.rb', line 767
def body
parse_body
@body_port.ropen {|f|
return f.read
}
end
|
#body=(str) ⇒ Object
Also known as:
preamble=
774
775
776
777
778
|
# File 'lib/tmail-pure/mail.rb', line 774
def body=(str)
parse_body
@body_port.wopen {|f| f.write str }
str
end
|
#body_port ⇒ Object
758
759
760
761
|
# File 'lib/tmail-pure/mail.rb', line 758
def body_port
parse_body
@body_port
end
|
#cc(default = nil) ⇒ Object
255
256
257
|
# File 'lib/tmail-pure/mail.rb', line 255
def cc(default = nil)
addrs2specs(cc_addrs(nil)) || default
end
|
#cc=(*strs) ⇒ Object
267
268
269
|
# File 'lib/tmail-pure/mail.rb', line 267
def cc=(*strs)
set_string_array_attr 'Cc', strs
end
|
#cc_addrs(default = nil) ⇒ Object
229
230
231
232
|
# File 'lib/tmail-pure/mail.rb', line 229
def cc_addrs(default = nil)
h = @header['cc'] or return default
h.addrs
end
|
#cc_addrs=(arg) ⇒ Object
243
244
245
|
# File 'lib/tmail-pure/mail.rb', line 243
def cc_addrs=(arg)
set_addrfield 'cc', arg
end
|
#charset(default = nil) ⇒ Object
453
454
455
456
|
# File 'lib/tmail-pure/mail.rb', line 453
def charset(default = nil)
h = @header['content-type'] or return default
h['charset'] || default
end
|
#charset=(str) ⇒ Object
458
459
460
461
462
463
464
465
466
467
|
# File 'lib/tmail-pure/mail.rb', line 458
def charset=(str)
if str
if h = @header[ 'content-type' ]
h['charset'] = str
else
store 'Content-Type', "text/plain; charset=#{str}"
end
end
str
end
|
#clear ⇒ Object
671
672
673
|
# File 'lib/tmail-pure/mail.rb', line 671
def clear
@header.clear
end
|
#content_type(default = nil) ⇒ Object
412
413
414
415
|
# File 'lib/tmail-pure/mail.rb', line 412
def content_type(default = nil)
h = @header['content-type'] or return default
h.content_type || default
end
|
#create_empty_mail ⇒ Object
110
111
112
|
# File 'lib/tmail-pure/net.rb', line 110
def create_empty_mail
self.class.new(StringPort.new(''), @config)
end
|
#create_forward ⇒ Object
133
134
135
|
# File 'lib/tmail-pure/net.rb', line 133
def create_forward
setup_forward create_empty_mail()
end
|
#create_reply ⇒ Object
114
115
116
|
# File 'lib/tmail-pure/net.rb', line 114
def create_reply
setup_reply create_empty_mail()
end
|
#date(default = nil) ⇒ Object
201
202
203
204
|
# File 'lib/tmail-pure/mail.rb', line 201
def date(default = nil)
h = @header['date'] or return default
h.date
end
|
#date=(time) ⇒ Object
206
207
208
209
210
211
212
213
|
# File 'lib/tmail-pure/mail.rb', line 206
def date=(time)
if time
store 'Date', time2str(time)
else
@header.delete 'date'
end
time
end
|
#delete(key) ⇒ Object
675
676
677
|
# File 'lib/tmail-pure/mail.rb', line 675
def delete(key)
@header.delete key.downcase
end
|
#delete_if ⇒ Object
679
680
681
682
683
684
685
686
687
688
|
# File 'lib/tmail-pure/mail.rb', line 679
def delete_if
@header.delete_if {|key, val|
if val.is_a?(Array)
val.delete_if {|v| yield key, v }
val.empty?
else
yield key, val
end
}
end
|
#delete_no_send_fields ⇒ Object
55
56
57
58
59
60
|
# File 'lib/tmail-pure/net.rb', line 55
def delete_no_send_fields
NOSEND_FIELDS.each do |nm|
delete nm
end
delete_if {|n,v| v.empty? }
end
|
#destinations(default = nil) ⇒ Object
134
135
136
137
138
|
# File 'lib/tmail-pure/mail.rb', line 134
def destinations(default = nil)
result = to([]) + cc([]) + bcc([])
return default if result.empty?
result
end
|
#disposition(default = nil) ⇒ Object
Also known as:
content_disposition
488
489
490
491
492
493
494
|
# File 'lib/tmail-pure/mail.rb', line 488
def disposition(default = nil)
if h = @header['content-disposition']
h.disposition || default
else
default
end
end
|
#disposition_param(name, default = nil) ⇒ Object
510
511
512
513
514
515
516
|
# File 'lib/tmail-pure/mail.rb', line 510
def disposition_param(name, default = nil)
if h = @header['content-disposition']
h[name] || default
else
default
end
end
|
#each(&block) ⇒ Object
763
764
765
|
# File 'lib/tmail-pure/mail.rb', line 763
def each(&block)
body_port().ropen {|f| f.each(&block) }
end
|
#each_destination(&block) ⇒ Object
Also known as:
each_dest
140
141
142
|
# File 'lib/tmail-pure/mail.rb', line 140
def each_destination(&block)
destinations([]).each(&block)
end
|
#each_field(&block) ⇒ Object
Also known as:
each_value
642
643
644
|
# File 'lib/tmail-pure/mail.rb', line 642
def each_field(&block)
@header.values.flatten.each(&block)
end
|
628
629
630
631
632
|
# File 'lib/tmail-pure/mail.rb', line 628
def
@header.each do |key, val|
[val].flatten.each {|v| yield key, v }
end
end
|
636
637
638
|
# File 'lib/tmail-pure/mail.rb', line 636
def (&block)
@header.each_key(&block)
end
|
#each_part(&block) ⇒ Object
799
800
801
|
# File 'lib/tmail-pure/mail.rb', line 799
def each_part(&block)
parts().each(&block)
end
|
#epilogue ⇒ Object
783
784
785
786
|
# File 'lib/tmail-pure/mail.rb', line 783
def epilogue
parse_body
@epilogue.dup
end
|
#epilogue=(str) ⇒ Object
788
789
790
791
792
|
# File 'lib/tmail-pure/mail.rb', line 788
def epilogue=(str)
parse_body
@epilogue = str
str
end
|
#error_reply_addresses(default = nil) ⇒ Object
150
151
152
153
154
155
156
|
# File 'lib/tmail-pure/mail.rb', line 150
def error_reply_addresses(default = nil)
if s = sender(nil)
[s]
else
from_addrs(default)
end
end
|
#friendly_from(default = nil) ⇒ Object
121
122
123
124
125
126
127
128
|
# File 'lib/tmail-pure/mail.rb', line 121
def friendly_from(default = nil)
h = @header['from']
a, = h.addrs
return default unless a
return a.phrase if a.phrase
return h..join(' ') unless h..empty?
a.spec
end
|
#from(default = nil) ⇒ Object
291
292
293
|
# File 'lib/tmail-pure/mail.rb', line 291
def from(default = nil)
addrs2specs(from_addrs(nil)) || default
end
|
#from=(*strs) ⇒ Object
295
296
297
|
# File 'lib/tmail-pure/mail.rb', line 295
def from=(*strs)
set_string_array_attr 'From', strs
end
|
#from_addr(default = nil) ⇒ Object
46
47
48
49
|
# File 'lib/tmail-pure/obsolete.rb', line 46
def from_addr(default = nil)
addr, = from_addrs(nil)
addr || default
end
|
#from_address(default = nil) ⇒ Object
130
131
132
|
# File 'lib/tmail-pure/mail.rb', line 130
def from_address(default = nil)
from([]).first || default
end
|
#from_addrs(default = nil) ⇒ Object
279
280
281
282
283
284
285
|
# File 'lib/tmail-pure/mail.rb', line 279
def from_addrs(default = nil)
if h = @header['from']
h.addrs
else
default
end
end
|
#from_addrs=(arg) ⇒ Object
Also known as:
from_address=
287
288
289
|
# File 'lib/tmail-pure/mail.rb', line 287
def from_addrs=(arg)
set_addrfield 'from', arg
end
|
#from_phrase(default = nil) ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/tmail-pure/obsolete.rb', line 53
def from_phrase(default = nil)
if a = from_addr(nil)
a.phrase
else
default
end
end
|
588
589
590
|
# File 'lib/tmail-pure/mail.rb', line 588
def
@header.dup
end
|
192
193
194
195
|
# File 'lib/tmail-pure/mail.rb', line 192
def (name, default = nil)
h = @header[name.downcase] or return default
h.to_s
end
|
#in_reply_to(default = nil) ⇒ Object
370
371
372
373
|
# File 'lib/tmail-pure/mail.rb', line 370
def in_reply_to(default = nil)
h = @header['in-reply-to'] or return default
h.ids
end
|
#in_reply_to=(*idstrs) ⇒ Object
375
376
377
|
# File 'lib/tmail-pure/mail.rb', line 375
def in_reply_to=(*idstrs)
set_string_array_attr 'In-Reply-To', idstrs
end
|
#inspect ⇒ Object
50
51
52
|
# File 'lib/tmail-pure/mail.rb', line 50
def inspect
"\#<#{self.class} port=#{@port.inspect} bodyport=#{@body_port.inspect}>"
end
|
#key?(key) ⇒ Boolean
Also known as:
include?, has_key?
694
695
696
|
# File 'lib/tmail-pure/mail.rb', line 694
def key?(key)
@header.key?(key.downcase)
end
|
#keys ⇒ Object
690
691
692
|
# File 'lib/tmail-pure/mail.rb', line 690
def keys
@header.keys
end
|
#main_type(default = nil) ⇒ Object
417
418
419
420
|
# File 'lib/tmail-pure/mail.rb', line 417
def main_type(default = nil)
h = @header['content-type'] or return default
h.main_type || default
end
|
#message_id(default = nil) ⇒ Object
Also known as:
msgid
361
362
363
364
|
# File 'lib/tmail-pure/mail.rb', line 361
def message_id(default = nil)
h = @header['message-id'] or return default
h.id || default
end
|
#message_id=(str) ⇒ Object
Also known as:
msgid=
366
367
368
|
# File 'lib/tmail-pure/mail.rb', line 366
def message_id=(str)
set_string_attr 'Message-Id', str
end
|
#mime_encode ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/tmail-pure/net.rb', line 70
def mime_encode
if parts.empty?
mime_encode_singlepart
else
mime_encode_multipart true
end
end
|
#mime_encode_binary(body) ⇒ Object
94
95
96
97
98
|
# File 'lib/tmail-pure/net.rb', line 94
def mime_encode_binary(body)
self.body = [body].pack('m')
self.set_content_type 'application', 'octet-stream'
self.encoding = 'Base64'
end
|
#mime_encode_multipart(top = true) ⇒ Object
100
101
102
103
104
105
106
107
108
|
# File 'lib/tmail-pure/net.rb', line 100
def mime_encode_multipart(top = true)
self.mime_version = '1.0' if top
self.set_content_type 'multipart', 'mixed'
e = encoding(nil)
if e and not /\A(?:7bit|8bit|binary)\z/i =~ e
raise ArgumentError,
'using C.T.Encoding with multipart mail is not permitted'
end
end
|
#mime_encode_singlepart ⇒ Object
78
79
80
81
82
83
84
85
86
|
# File 'lib/tmail-pure/net.rb', line 78
def mime_encode_singlepart
self.mime_version = '1.0'
b = body
if NKF.guess(b) != NKF::BINARY
mime_encode_text b
else
mime_encode_binary b
end
end
|
#mime_encode_text(body) ⇒ Object
88
89
90
91
92
|
# File 'lib/tmail-pure/net.rb', line 88
def mime_encode_text(body)
self.body = NKF.nkf('-j -m0', body)
self.set_content_type 'text', 'plain', {'charset' => 'iso-2022-jp'}
self.encoding = '7bit'
end
|
#mime_version(default = nil) ⇒ Object
392
393
394
395
|
# File 'lib/tmail-pure/mail.rb', line 392
def mime_version(default = nil)
h = @header['mime-version'] or return default
h.version || default
end
|
#mime_version=(m, opt = nil) ⇒ Object
397
398
399
400
401
402
403
404
405
406
407
408
409
|
# File 'lib/tmail-pure/mail.rb', line 397
def mime_version=(m, opt = nil)
if opt
if h = @header['mime-version']
h.major = m
h.minor = opt
else
store 'Mime-Version', "#{m}.#{opt}"
end
else
store 'Mime-Version', m
end
m
end
|
#multipart? ⇒ Boolean
170
171
172
|
# File 'lib/tmail-pure/mail.rb', line 170
def multipart?
main_type('').downcase == 'multipart'
end
|
#ordered_each ⇒ Object
659
660
661
662
663
664
665
666
667
668
669
|
# File 'lib/tmail-pure/mail.rb', line 659
def ordered_each
list = @header.keys
FIELD_ORDER.each do |name|
if list.delete(name)
[@header[name]].flatten.each {|v| yield name, v }
end
end
list.each do |name|
[@header[name]].flatten.each {|v| yield name, v }
end
end
|
#parts ⇒ Object
794
795
796
797
|
# File 'lib/tmail-pure/mail.rb', line 794
def parts
parse_body
@parts
end
|
#ready_to_send ⇒ Object
44
45
46
47
48
|
# File 'lib/tmail-pure/net.rb', line 44
def ready_to_send
delete_no_send_fields
add_message_id
add_date
end
|
#references(default = nil) ⇒ Object
379
380
381
382
|
# File 'lib/tmail-pure/mail.rb', line 379
def references(default = nil)
h = @header['references'] or return default
h.refs
end
|
#references=(*strs) ⇒ Object
384
385
386
|
# File 'lib/tmail-pure/mail.rb', line 384
def references=(*strs)
set_string_array_attr 'References', strs
end
|
#reply_addresses(default = nil) ⇒ Object
146
147
148
|
# File 'lib/tmail-pure/mail.rb', line 146
def reply_addresses(default = nil)
reply_to_addrs(nil) or from_addrs(nil) or default
end
|
#reply_to(default = nil) ⇒ Object
309
310
311
|
# File 'lib/tmail-pure/mail.rb', line 309
def reply_to(default = nil)
addrs2specs(reply_to_addrs(nil)) || default
end
|
#reply_to=(*strs) ⇒ Object
313
314
315
|
# File 'lib/tmail-pure/mail.rb', line 313
def reply_to=(*strs)
set_string_array_attr 'Reply-To', strs
end
|
#reply_to_addrs(default = nil) ⇒ Object
300
301
302
303
|
# File 'lib/tmail-pure/mail.rb', line 300
def reply_to_addrs(default = nil)
h = @header['reply-to'] or return default
h.addrs
end
|
#reply_to_addrs=(arg) ⇒ Object
305
306
307
|
# File 'lib/tmail-pure/mail.rb', line 305
def reply_to_addrs=(arg)
set_addrfield 'reply-to', arg
end
|
#send_text_to(smtp) ⇒ Object
23
24
25
26
27
28
|
# File 'lib/tmail-pure/net.rb', line 23
def send_text_to(smtp)
do_send_to(smtp) do
ready_to_send
mime_encode
end
end
|
#send_to(smtp) ⇒ Object
17
18
19
20
21
|
# File 'lib/tmail-pure/net.rb', line 17
def send_to(smtp)
do_send_to(smtp) do
ready_to_send
end
end
|
#send_to_0(smtp, from, to) ⇒ Object
38
39
40
41
42
|
# File 'lib/tmail-pure/net.rb', line 38
def send_to_0(smtp, from, to)
smtp.ready(from, to) do |f|
encoded "\r\n", 'j', f, ''
end
end
|
#sender(default) ⇒ Object
334
335
336
337
338
|
# File 'lib/tmail-pure/mail.rb', line 334
def sender(default)
f = @header['sender'] or return default
a = f.addr or return default
a.spec
end
|
#sender=(str) ⇒ Object
340
341
342
|
# File 'lib/tmail-pure/mail.rb', line 340
def sender=(str)
set_string_attr 'Sender', str
end
|
#sender_addr(default = nil) ⇒ Object
318
319
320
321
|
# File 'lib/tmail-pure/mail.rb', line 318
def sender_addr(default = nil)
f = @header['sender'] or return default
f.addr || default
end
|
#sender_addr=(addr) ⇒ Object
323
324
325
326
327
328
329
330
331
332
|
# File 'lib/tmail-pure/mail.rb', line 323
def sender_addr=(addr)
if addr
h = HeaderField.internal_new('sender', @config)
h.addr = addr
@header['sender'] = h
else
@header.delete 'sender'
end
addr
end
|
#set_content_type(str, sub = nil, param = nil) ⇒ Object
Also known as:
content_type=
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
|
# File 'lib/tmail-pure/mail.rb', line 427
def set_content_type(str, sub = nil, param = nil)
if sub
main, sub = str, sub
else
main, sub = str.split(%r</>, 2)
raise ArgumentError, "sub type missing: #{str.inspect}" unless sub
end
if h = @header['content-type']
h.main_type = main
h.sub_type = sub
h.params.clear
else
store 'Content-Type', "#{main}/#{sub}"
end
@header['content-type'].params.replace param if param
str
end
|
#set_disposition(pos, params = nil) ⇒ Object
Also known as:
disposition=, set_content_disposition, content_disposition=
498
499
500
501
502
503
504
|
# File 'lib/tmail-pure/mail.rb', line 498
def set_disposition(pos, params = nil)
@header.delete 'content-disposition'
return pos unless pos
store('Content-Disposition', pos)
@header['content-disposition'].params.replace params if params
pos
end
|
#setup_forward(mail) ⇒ Object
137
138
139
140
141
142
143
|
# File 'lib/tmail-pure/net.rb', line 137
def setup_forward(mail)
m = Mail.new(StringPort.new(''))
m.body = decoded
m.set_content_type 'message', 'rfc822'
m.encoding = encoding('7bit')
mail.parts.push m
end
|
#setup_reply(m) ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/tmail-pure/net.rb', line 118
def setup_reply(m)
if tmp = reply_addresses(nil)
m.to_addrs = tmp
end
mid = message_id(nil)
tmp = references(nil) || []
tmp.push mid if mid
m.in_reply_to = [mid] if mid
m.references = tmp unless tmp.empty?
m.subject = 'Re: ' + subject('').sub(/\A(?:\s*re:)+/i, '')
m
end
|
#strftime(fmt, default = nil) ⇒ Object
215
216
217
218
|
# File 'lib/tmail-pure/mail.rb', line 215
def strftime(fmt, default = nil)
t = date or return default
t.strftime(fmt)
end
|
#sub_type(default = nil) ⇒ Object
422
423
424
425
|
# File 'lib/tmail-pure/mail.rb', line 422
def sub_type(default = nil)
h = @header['content-type'] or return default
h.sub_type || default
end
|
#subject(default = nil) ⇒ Object
348
349
350
351
|
# File 'lib/tmail-pure/mail.rb', line 348
def subject(default = nil)
h = @header['subject'] or return default
h.body
end
|
#subject=(str) ⇒ Object
353
354
355
|
# File 'lib/tmail-pure/mail.rb', line 353
def subject=(str)
set_string_attr 'Subject', str
end
|
#to(default = nil) ⇒ Object
251
252
253
|
# File 'lib/tmail-pure/mail.rb', line 251
def to(default = nil)
addrs2specs(to_addrs(nil)) || default
end
|
#to=(*strs) ⇒ Object
263
264
265
|
# File 'lib/tmail-pure/mail.rb', line 263
def to=(*strs)
set_string_array_attr 'To', strs
end
|
#to_addrs(default = nil) ⇒ Object
224
225
226
227
|
# File 'lib/tmail-pure/mail.rb', line 224
def to_addrs(default = nil)
h = @header['to'] or return default
h.addrs
end
|
#to_addrs=(arg) ⇒ Object
239
240
241
|
# File 'lib/tmail-pure/mail.rb', line 239
def to_addrs=(arg)
set_addrfield 'to', arg
end
|
#transfer_encoding(default = nil) ⇒ Object
Also known as:
encoding, content_transfer_encoding
470
471
472
473
474
475
476
|
# File 'lib/tmail-pure/mail.rb', line 470
def transfer_encoding(default = nil)
if h = @header['content-transfer-encoding']
h.encoding || default
else
default
end
end
|
#transfer_encoding=(str) ⇒ Object
Also known as:
encoding=, content_transfer_encoding=
478
479
480
|
# File 'lib/tmail-pure/mail.rb', line 478
def transfer_encoding=(str)
set_string_attr 'Content-Transfer-Encoding', str
end
|
#type_param(name, default = nil) ⇒ Object
448
449
450
451
|
# File 'lib/tmail-pure/mail.rb', line 448
def type_param(name, default = nil)
h = @header['content-type'] or return default
h[name] || default
end
|
#value?(val) ⇒ Boolean
Also known as:
has_value?
35
36
37
38
|
# File 'lib/tmail-pure/obsolete.rb', line 35
def value?(val)
return false unless val.is_a?(HeaderField)
[@header[val.name.downcase]].flatten.include?(val)
end
|
#values ⇒ Object
27
28
29
30
31
32
33
|
# File 'lib/tmail-pure/obsolete.rb', line 27
def values
result = []
each_field do |f|
result.push f
end
result
end
|
#values_at(*args) ⇒ Object
Also known as:
indexes, indices
698
699
700
|
# File 'lib/tmail-pure/mail.rb', line 698
def values_at(*args)
args.map {|k| @header[k.downcase] }.flatten
end
|
#write_back(eol = "\n", charset = 'e') ⇒ Object
62
63
64
65
66
67
|
# File 'lib/tmail-pure/mail.rb', line 62
def write_back(eol = "\n", charset = 'e')
parse_body
@port.wopen {|stream|
encoded eol, charset, stream
}
end
|