Class: TMail::Mail
- Inherits:
-
Object
show all
- Includes:
- StrategyInterface, TextUtils
- Defined in:
- lib/action_mailer/vendor/tmail/obsolete.rb,
lib/action_mailer/vendor/tmail/net.rb,
lib/action_mailer/vendor/tmail/mail.rb,
lib/action_mailer/vendor/tmail/facade.rb,
lib/action_mailer/vendor/tmail/quoting.rb,
lib/action_mailer/vendor/tmail/obsolete.rb,
lib/action_mailer/vendor/tmail/attachments.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
)
Constants included
from TextUtils
TextUtils::ATOM_UNSAFE, TextUtils::CONTROL_CHAR, TextUtils::MESSAGE_ID, TextUtils::MIME_ENCODED, TextUtils::MONTH, TextUtils::NKF_FLAGS, TextUtils::PHRASE_UNSAFE, TextUtils::RFC2231_ENCODED, TextUtils::TOKEN_UNSAFE, TextUtils::WDAY, TextUtils::ZONESTR_TABLE
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
-
#attachments ⇒ Object
-
#base64_decode ⇒ Object
-
#base64_encode ⇒ Object
-
#bcc(default = nil) ⇒ Object
-
#bcc=(*strs) ⇒ Object
-
#bcc_addrs(default = nil) ⇒ Object
-
#bcc_addrs=(arg) ⇒ Object
-
#body(to_charset = 'utf-8', &block) ⇒ Object
-
#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
-
#has_attachments? ⇒ Boolean
-
#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
-
#preamble ⇒ Object
-
#quoted_body ⇒ Object
-
#quoted_subject ⇒ 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(str, params = nil) ⇒ Object
(also: #disposition=, #set_content_disposition, #content_disposition=)
-
#setup_forward(mail) ⇒ Object
-
#setup_reply(m) ⇒ Object
-
#strftime(fmt, default = nil) ⇒ Object
-
#sub_header(key, param) ⇒ Object
-
#sub_type(default = nil) ⇒ Object
-
#subject(to_charset = 'utf-8') ⇒ 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
-
#unquoted_body(to_charset = 'utf-8') ⇒ Object
-
#value?(val) ⇒ Boolean
(also: #has_value?)
-
#values ⇒ Object
-
#values_at(*args) ⇒ Object
(also: #indexes, #indices)
-
#write_back(eol = "\n", charset = 'e') ⇒ Object
Methods included from TextUtils
#atom_safe?, #decode_RFC2231, #decode_params, #join_domain, #message_id?, #mime_encoded?, #quote_atom, #quote_phrase, #quote_token, #time2str, #timezone_string_to_unixtime, #to_kcode, #token_safe?
#accept_strategy, create_dest, #decoded, #encoded
Constructor Details
#initialize(port = nil, conf = DEFAULT_CONFIG) ⇒ Mail
Returns a new instance of Mail.
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 39
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.
55
56
57
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 55
def port
@port
end
|
Class Method Details
.boundary ⇒ Object
108
109
110
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 108
def Mail.boundary
::TMail.new_boundary
end
|
.load(fname) ⇒ Object
Also known as:
load_from, loadfrom
27
28
29
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 27
def load( fname )
new(FilePort.new(fname))
end
|
.msgid ⇒ Object
112
113
114
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 112
def Mail.msgid
::TMail.new_message_id
end
|
.parse(str) ⇒ Object
34
35
36
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 34
def parse( str )
new(StringPort.new(str))
end
|
Instance Method Details
#[](key) ⇒ Object
Also known as:
fetch
144
145
146
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 144
def []( key )
@header[key.downcase]
end
|
#[]=(key, val) ⇒ Object
Also known as:
store
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 154
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
ALLOW_MULTIPLE.include? dkey or
raise ArgumentError, "#{key}: Header must not be multiple"
@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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 74
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
67
68
69
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 67
def add_date
self.date = Time.now
end
|
#add_message_id(fqdn = nil) ⇒ Object
63
64
65
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 63
def add_message_id( fqdn = nil )
self.message_id = ::TMail::new_message_id(fqdn)
end
|
#attachments ⇒ Object
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/action_mailer/vendor/tmail/attachments.rb', line 13
def attachments
if multipart?
parts.collect { |part|
if part.["content-type"].main_type != "text"
content = part.body file_name = part.("content-type", "name") ||
part.("content-disposition", "filename")
next if file_name.blank? || content.blank?
attachment = Attachment.new(content)
attachment.original_filename = file_name.strip
attachment.content_type = part.content_type
attachment
end
}.compact
end
end
|
#base64_decode ⇒ Object
483
484
485
486
487
488
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 483
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
478
479
480
481
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 478
def base64_encode
store 'Content-Transfer-Encoding', 'Base64'
self.body = Base64.folding_encode(self.body)
end
|
#bcc(default = nil) ⇒ Object
154
155
156
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 154
def bcc( default = nil )
addrs2specs(bcc_addrs(nil)) || default
end
|
#bcc=(*strs) ⇒ Object
166
167
168
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 166
def bcc=( *strs )
set_string_array_attr 'Bcc', strs
end
|
#bcc_addrs(default = nil) ⇒ Object
126
127
128
129
130
131
132
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 126
def bcc_addrs( default = nil )
if h = @header['bcc']
h.addrs
else
default
end
end
|
#bcc_addrs=(arg) ⇒ Object
142
143
144
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 142
def bcc_addrs=( arg )
set_addrfield 'bcc', arg
end
|
#body(to_charset = 'utf-8', &block) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/action_mailer/vendor/tmail/quoting.rb', line 25
def body(to_charset = 'utf-8', &block)
attachment_presenter = block || Proc.new { |file_name| "Attachment: #{file_name}\n" }
if multipart?
parts.collect { |part|
= part["content-type"]
if part.multipart?
part.body(to_charset, &attachment_presenter)
elsif .nil?
""
elsif .main_type == "text"
part.unquoted_body(to_charset)
else
attachment_presenter.call(["name"] || "(unnamed)")
end
}.join
else
unquoted_body(to_charset)
end
end
|
#body=(str) ⇒ Object
Also known as:
preamble=
338
339
340
341
342
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 338
def body=( str )
parse_body
@body_port.wopen {|f| f.write str }
str
end
|
#body_port ⇒ Object
322
323
324
325
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 322
def body_port
parse_body
@body_port
end
|
#cc(default = nil) ⇒ Object
150
151
152
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 150
def cc( default = nil )
addrs2specs(cc_addrs(nil)) || default
end
|
#cc=(*strs) ⇒ Object
162
163
164
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 162
def cc=( *strs )
set_string_array_attr 'Cc', strs
end
|
#cc_addrs(default = nil) ⇒ Object
118
119
120
121
122
123
124
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 118
def cc_addrs( default = nil )
if h = @header['cc']
h.addrs
else
default
end
end
|
#cc_addrs=(arg) ⇒ Object
138
139
140
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 138
def cc_addrs=( arg )
set_addrfield 'cc', arg
end
|
#charset(default = nil) ⇒ Object
392
393
394
395
396
397
398
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 392
def charset( default = nil )
if h = @header['content-type']
h['charset'] or default
else
default
end
end
|
#charset=(str) ⇒ Object
400
401
402
403
404
405
406
407
408
409
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 400
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
229
230
231
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 229
def clear
@header.clear
end
|
#content_type(default = nil) ⇒ Object
339
340
341
342
343
344
345
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 339
def content_type( default = nil )
if h = @header['content-type']
h.content_type || default
else
default
end
end
|
#create_empty_mail ⇒ Object
111
112
113
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 111
def create_empty_mail
self.class.new(StringPort.new(''), @config)
end
|
#create_forward ⇒ Object
134
135
136
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 134
def create_forward
setup_forward create_empty_mail()
end
|
#create_reply ⇒ Object
467
468
469
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 467
def create_reply
setup_reply create_empty_mail()
end
|
#date(default = nil) ⇒ Object
80
81
82
83
84
85
86
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 80
def date( default = nil )
if h = @header['date']
h.date
else
default
end
end
|
#date=(time) ⇒ Object
88
89
90
91
92
93
94
95
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 88
def date=( time )
if time
store 'Date', time2str(time)
else
@header.delete 'date'
end
time
end
|
#delete(key) ⇒ Object
233
234
235
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 233
def delete( key )
@header.delete key.downcase
end
|
#delete_if ⇒ Object
237
238
239
240
241
242
243
244
245
246
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 237
def delete_if
@header.delete_if do |key,val|
if Array === val
val.delete_if {|v| yield key, v }
val.empty?
else
yield key, val
end
end
end
|
#delete_no_send_fields ⇒ Object
56
57
58
59
60
61
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 56
def delete_no_send_fields
NOSEND_FIELDS.each do |nm|
delete nm
end
delete_if {|n,v| v.empty? }
end
|
#destinations(default = nil) ⇒ Object
491
492
493
494
495
496
497
498
499
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 491
def destinations( default = nil )
ret = []
%w( to cc bcc ).each do |nm|
if h = @header[nm]
h.addrs.each {|i| ret.push i.address }
end
end
ret.empty? ? default : ret
end
|
#disposition(default = nil) ⇒ Object
Also known as:
content_disposition
430
431
432
433
434
435
436
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 430
def disposition( default = nil )
if h = @header['content-disposition']
h.disposition || default
else
default
end
end
|
#disposition_param(name, default = nil) ⇒ Object
455
456
457
458
459
460
461
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 455
def disposition_param( name, default = nil )
if h = @header['content-disposition']
h[name] || default
else
default
end
end
|
#each(&block) ⇒ Object
327
328
329
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 327
def each( &block )
body_port().ropen {|f| f.each(&block) }
end
|
#each_destination(&block) ⇒ Object
Also known as:
each_dest
501
502
503
504
505
506
507
508
509
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 501
def each_destination( &block )
destinations([]).each do |i|
if Address === i
yield i
else
i.each(&block)
end
end
end
|
#each_field(&block) ⇒ Object
Also known as:
each_value
200
201
202
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 200
def each_field( &block )
@header.values.flatten.each(&block)
end
|
186
187
188
189
190
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 186
def
@header.each do |key, val|
[val].flatten.each {|v| yield key, v }
end
end
|
194
195
196
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 194
def ( &block )
@header.each_key(&block)
end
|
#each_part(&block) ⇒ Object
363
364
365
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 363
def each_part( &block )
parts().each(&block)
end
|
#epilogue ⇒ Object
347
348
349
350
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 347
def epilogue
parse_body
@epilogue.dup
end
|
#epilogue=(str) ⇒ Object
352
353
354
355
356
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 352
def epilogue=( str )
parse_body
@epilogue = str
str
end
|
#error_reply_addresses(default = nil) ⇒ Object
518
519
520
521
522
523
524
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 518
def error_reply_addresses( default = nil )
if s = sender(nil)
[s]
else
from_addrs(default)
end
end
|
#friendly_from(default = nil) ⇒ Object
195
196
197
198
199
200
201
202
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 195
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
187
188
189
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 187
def from( default = nil )
addrs2specs(from_addrs(nil)) || default
end
|
#from=(*strs) ⇒ Object
191
192
193
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 191
def from=( *strs )
set_string_array_attr 'From', strs
end
|
#from_addr(default = nil) ⇒ Object
36
37
38
39
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 36
def from_addr( default = nil )
addr, = from_addrs(nil)
addr || default
end
|
#from_address(default = nil) ⇒ Object
41
42
43
44
45
46
47
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 41
def from_address( default = nil )
if a = from_addr(nil)
a.spec
else
default
end
end
|
#from_addrs(default = nil) ⇒ Object
175
176
177
178
179
180
181
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 175
def from_addrs( default = nil )
if h = @header['from']
h.addrs
else
default
end
end
|
#from_addrs=(arg) ⇒ Object
Also known as:
from_address=
183
184
185
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 183
def from_addrs=( arg )
set_addrfield 'from', arg
end
|
#from_phrase(default = nil) ⇒ Object
51
52
53
54
55
56
57
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 51
def from_phrase( default = nil )
if a = from_addr(nil)
a.phrase
else
default
end
end
|
#has_attachments? ⇒ Boolean
9
10
11
|
# File 'lib/action_mailer/vendor/tmail/attachments.rb', line 9
def has_attachments?
multipart? && parts.any? { |part| part.["content-type"].main_type != "text" }
end
|
140
141
142
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 140
def
@header.dup
end
|
18
19
20
21
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 18
def ( name, default = nil )
h = @header[name.downcase] or return default
h.to_s
end
|
#in_reply_to(default = nil) ⇒ Object
287
288
289
290
291
292
293
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 287
def in_reply_to( default = nil )
if h = @header['in-reply-to']
h.ids
else
default
end
end
|
#in_reply_to=(*idstrs) ⇒ Object
295
296
297
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 295
def in_reply_to=( *idstrs )
set_string_array_attr 'In-Reply-To', idstrs
end
|
#inspect ⇒ Object
57
58
59
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 57
def inspect
"\#<#{self.class} port=#{@port.inspect} bodyport=#{@body_port.inspect}>"
end
|
#key?(key) ⇒ Boolean
Also known as:
include?, has_key?
252
253
254
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 252
def key?( key )
@header.key? key.downcase
end
|
#keys ⇒ Object
248
249
250
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 248
def keys
@header.keys
end
|
#main_type(default = nil) ⇒ Object
347
348
349
350
351
352
353
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 347
def main_type( default = nil )
if h = @header['content-type']
h.main_type || default
else
default
end
end
|
#message_id(default = nil) ⇒ Object
Also known as:
msgid
275
276
277
278
279
280
281
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 275
def message_id( default = nil )
if h = @header['message-id']
h.id || default
else
default
end
end
|
#message_id=(str) ⇒ Object
Also known as:
msgid=
283
284
285
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 283
def message_id=( str )
set_string_attr 'Message-Id', str
end
|
#mime_encode ⇒ Object
71
72
73
74
75
76
77
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 71
def mime_encode
if parts.empty?
mime_encode_singlepart
else
mime_encode_multipart true
end
end
|
#mime_encode_binary(body) ⇒ Object
95
96
97
98
99
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 95
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
101
102
103
104
105
106
107
108
109
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 101
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
79
80
81
82
83
84
85
86
87
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 79
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
89
90
91
92
93
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 89
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
316
317
318
319
320
321
322
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 316
def mime_version( default = nil )
if h = @header['mime-version']
h.version || default
else
default
end
end
|
#mime_version=(m, opt = nil) ⇒ Object
324
325
326
327
328
329
330
331
332
333
334
335
336
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 324
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
527
528
529
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 527
def multipart?
main_type('').downcase == 'multipart'
end
|
#ordered_each ⇒ Object
217
218
219
220
221
222
223
224
225
226
227
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 217
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
358
359
360
361
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 358
def parts
parse_body
@parts
end
|
#preamble ⇒ Object
344
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 344
alias preamble body
|
#quoted_body ⇒ Object
331
332
333
334
335
336
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 331
def quoted_body
parse_body
@body_port.ropen {|f|
return f.read
}
end
|
#quoted_subject ⇒ Object
264
265
266
267
268
269
270
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 264
def subject( default = nil )
if h = @header['subject']
h.body
else
default
end
end
|
#ready_to_send ⇒ Object
45
46
47
48
49
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 45
def ready_to_send
delete_no_send_fields
add_message_id
add_date
end
|
#references(default = nil) ⇒ Object
299
300
301
302
303
304
305
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 299
def references( default = nil )
if h = @header['references']
h.refs
else
default
end
end
|
#references=(*strs) ⇒ Object
307
308
309
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 307
def references=( *strs )
set_string_array_attr 'References', strs
end
|
#reply_addresses(default = nil) ⇒ Object
514
515
516
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 514
def reply_addresses( default = nil )
reply_to_addrs(nil) or from_addrs(nil) or default
end
|
#reply_to(default = nil) ⇒ Object
217
218
219
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 217
def reply_to( default = nil )
addrs2specs(reply_to_addrs(nil)) || default
end
|
#reply_to=(*strs) ⇒ Object
221
222
223
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 221
def reply_to=( *strs )
set_string_array_attr 'Reply-To', strs
end
|
#reply_to_addrs(default = nil) ⇒ Object
205
206
207
208
209
210
211
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 205
def reply_to_addrs( default = nil )
if h = @header['reply-to']
h.addrs
else
default
end
end
|
#reply_to_addrs=(arg) ⇒ Object
213
214
215
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 213
def reply_to_addrs=( arg )
set_addrfield 'reply-to', arg
end
|
#send_text_to(smtp) ⇒ Object
24
25
26
27
28
29
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 24
def send_text_to( smtp )
do_send_to(smtp) do
ready_to_send
mime_encode
end
end
|
#send_to(smtp) ⇒ Object
18
19
20
21
22
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 18
def send_to( smtp )
do_send_to(smtp) do
ready_to_send
end
end
|
#send_to_0(smtp, from, to) ⇒ Object
39
40
41
42
43
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 39
def send_to_0( smtp, from, to )
smtp.ready(from, to) do |f|
encoded "\r\n", 'j', f, ''
end
end
|
#sender(default) ⇒ Object
242
243
244
245
246
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 242
def sender( default )
f = @header['sender'] or return default
a = f.addr or return default
a.spec
end
|
#sender=(str) ⇒ Object
248
249
250
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 248
def sender=( str )
set_string_attr 'Sender', str
end
|
#sender_addr(default = nil) ⇒ Object
226
227
228
229
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 226
def sender_addr( default = nil )
f = @header['sender'] or return default
f.addr or return default
end
|
#sender_addr=(addr) ⇒ Object
231
232
233
234
235
236
237
238
239
240
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 231
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=
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 363
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(str, params = nil) ⇒ Object
Also known as:
disposition=, set_content_disposition, content_disposition=
440
441
442
443
444
445
446
447
448
449
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 440
def set_disposition( str, params = nil )
if h = @header['content-disposition']
h.disposition = str
h.params.clear
else
store('Content-Disposition', str)
h = @header['content-disposition']
end
h.params.replace params if params
end
|
#setup_forward(mail) ⇒ Object
138
139
140
141
142
143
144
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 138
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 119
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
97
98
99
100
101
102
103
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 97
def strftime( fmt, default = nil )
if t = date
t.strftime(fmt)
else
default
end
end
|
148
149
150
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 148
def (key, param)
(hdr = self[key]) ? hdr[param] : nil
end
|
#sub_type(default = nil) ⇒ Object
355
356
357
358
359
360
361
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 355
def sub_type( default = nil )
if h = @header['content-type']
h.sub_type || default
else
default
end
end
|
#subject(to_charset = 'utf-8') ⇒ Object
257
258
259
260
261
262
263
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 257
def subject( default = nil )
if h = @header['subject']
h.body
else
default
end
end
|
#subject=(str) ⇒ Object
266
267
268
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 266
def subject=( str )
set_string_attr 'Subject', str
end
|
#to(default = nil) ⇒ Object
146
147
148
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 146
def to( default = nil )
addrs2specs(to_addrs(nil)) || default
end
|
#to=(*strs) ⇒ Object
158
159
160
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 158
def to=( *strs )
set_string_array_attr 'To', strs
end
|
#to_addrs(default = nil) ⇒ Object
110
111
112
113
114
115
116
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 110
def to_addrs( default = nil )
if h = @header['to']
h.addrs
else
default
end
end
|
#to_addrs=(arg) ⇒ Object
134
135
136
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 134
def to_addrs=( arg )
set_addrfield 'to', arg
end
|
#transfer_encoding(default = nil) ⇒ Object
Also known as:
encoding, content_transfer_encoding
412
413
414
415
416
417
418
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 412
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=
420
421
422
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 420
def transfer_encoding=( str )
set_string_attr 'Content-Transfer-Encoding', str
end
|
#type_param(name, default = nil) ⇒ Object
384
385
386
387
388
389
390
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 384
def type_param( name, default = nil )
if h = @header['content-type']
h[name] || default
else
default
end
end
|
#unquoted_body(to_charset = 'utf-8') ⇒ Object
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/action_mailer/vendor/tmail/quoting.rb', line 7
def unquoted_body(to_charset = 'utf-8')
from_charset = ("content-type", "charset")
case (content_transfer_encoding || "7bit").downcase
when "quoted-printable"
Unquoter.unquote_quoted_printable_and_convert_to(quoted_body,
to_charset, from_charset)
when "base64"
Unquoter.unquote_base64_and_convert_to(quoted_body, to_charset,
from_charset)
when "7bit", "8bit"
Unquoter.convert_to(quoted_body, to_charset, from_charset)
when "binary"
quoted_body
else
quoted_body
end
end
|
#value?(val) ⇒ Boolean
Also known as:
has_value?
24
25
26
27
28
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 24
def value?( val )
HeaderField === val or return false
[ @header[val.name.downcase] ].flatten.include? val
end
|
#values ⇒ Object
18
19
20
21
22
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 18
def values
ret = []
each_field {|v| ret.push v }
ret
end
|
#values_at(*args) ⇒ Object
Also known as:
indexes, indices
256
257
258
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 256
def values_at( *args )
args.map {|k| @header[k.downcase] }.flatten
end
|
#write_back(eol = "\n", charset = 'e') ⇒ Object
69
70
71
72
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 69
def write_back( eol = "\n", charset = 'e' )
parse_body
@port.wopen {|stream| encoded eol, charset, stream }
end
|