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
-
#attachment?(part) ⇒ Boolean
-
#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.
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 58
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.
74
75
76
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 74
def port
@port
end
|
Class Method Details
.boundary ⇒ Object
127
128
129
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 127
def Mail.boundary
::TMail.new_boundary
end
|
.load(fname) ⇒ Object
Also known as:
load_from, loadfrom
46
47
48
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 46
def load( fname )
new(FilePort.new(fname))
end
|
.msgid ⇒ Object
131
132
133
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 131
def Mail.msgid
::TMail.new_message_id
end
|
.parse(str) ⇒ Object
53
54
55
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 53
def parse( str )
new(StringPort.new(str))
end
|
Instance Method Details
#[](key) ⇒ Object
Also known as:
fetch
163
164
165
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 163
def []( key )
@header[key.downcase]
end
|
#[]=(key, val) ⇒ Object
Also known as:
store
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 173
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 93
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
86
87
88
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 86
def add_date
self.date = Time.now
end
|
#add_message_id(fqdn = nil) ⇒ Object
82
83
84
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 82
def add_message_id( fqdn = nil )
self.message_id = ::TMail::new_message_id(fqdn)
end
|
#attachment?(part) ⇒ Boolean
13
14
15
16
|
# File 'lib/action_mailer/vendor/tmail/attachments.rb', line 13
def attachment?(part)
(part['content-disposition'] && part['content-disposition'].disposition == "attachment") ||
part.['content-type'].main_type != "text"
end
|
#attachments ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/action_mailer/vendor/tmail/attachments.rb', line 18
def attachments
if multipart?
parts.collect { |part|
if attachment?(part)
content = part.body file_name = (part['content-location'] &&
part['content-location'].body) ||
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
502
503
504
505
506
507
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 502
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
497
498
499
500
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 497
def base64_encode
store 'Content-Transfer-Encoding', 'Base64'
self.body = Base64.folding_encode(self.body)
end
|
#bcc(default = nil) ⇒ Object
173
174
175
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 173
def bcc( default = nil )
addrs2specs(bcc_addrs(nil)) || default
end
|
#bcc=(*strs) ⇒ Object
185
186
187
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 185
def bcc=( *strs )
set_string_array_attr 'Bcc', strs
end
|
#bcc_addrs(default = nil) ⇒ Object
145
146
147
148
149
150
151
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 145
def bcc_addrs( default = nil )
if h = @header['bcc']
h.addrs
else
default
end
end
|
#bcc_addrs=(arg) ⇒ Object
161
162
163
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 161
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 !attachment?(part)
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=
357
358
359
360
361
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 357
def body=( str )
parse_body
@body_port.wopen {|f| f.write str }
str
end
|
#body_port ⇒ Object
341
342
343
344
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 341
def body_port
parse_body
@body_port
end
|
#cc(default = nil) ⇒ Object
169
170
171
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 169
def cc( default = nil )
addrs2specs(cc_addrs(nil)) || default
end
|
#cc=(*strs) ⇒ Object
181
182
183
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 181
def cc=( *strs )
set_string_array_attr 'Cc', strs
end
|
#cc_addrs(default = nil) ⇒ Object
137
138
139
140
141
142
143
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 137
def cc_addrs( default = nil )
if h = @header['cc']
h.addrs
else
default
end
end
|
#cc_addrs=(arg) ⇒ Object
157
158
159
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 157
def cc_addrs=( arg )
set_addrfield 'cc', arg
end
|
#charset(default = nil) ⇒ Object
411
412
413
414
415
416
417
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 411
def charset( default = nil )
if h = @header['content-type']
h['charset'] or default
else
default
end
end
|
#charset=(str) ⇒ Object
419
420
421
422
423
424
425
426
427
428
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 419
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
248
249
250
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 248
def clear
@header.clear
end
|
#content_type(default = nil) ⇒ Object
358
359
360
361
362
363
364
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 358
def content_type( default = nil )
if h = @header['content-type']
h.content_type || default
else
default
end
end
|
#create_empty_mail ⇒ Object
130
131
132
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 130
def create_empty_mail
self.class.new(StringPort.new(''), @config)
end
|
#create_forward ⇒ Object
153
154
155
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 153
def create_forward
setup_forward create_empty_mail()
end
|
#create_reply ⇒ Object
486
487
488
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 486
def create_reply
setup_reply create_empty_mail()
end
|
#date(default = nil) ⇒ Object
99
100
101
102
103
104
105
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 99
def date( default = nil )
if h = @header['date']
h.date
else
default
end
end
|
#date=(time) ⇒ Object
107
108
109
110
111
112
113
114
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 107
def date=( time )
if time
store 'Date', time2str(time)
else
@header.delete 'date'
end
time
end
|
#delete(key) ⇒ Object
252
253
254
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 252
def delete( key )
@header.delete key.downcase
end
|
#delete_if ⇒ Object
256
257
258
259
260
261
262
263
264
265
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 256
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
75
76
77
78
79
80
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 75
def delete_no_send_fields
NOSEND_FIELDS.each do |nm|
delete nm
end
delete_if {|n,v| v.empty? }
end
|
#destinations(default = nil) ⇒ Object
510
511
512
513
514
515
516
517
518
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 510
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
449
450
451
452
453
454
455
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 449
def disposition( default = nil )
if h = @header['content-disposition']
h.disposition || default
else
default
end
end
|
#disposition_param(name, default = nil) ⇒ Object
474
475
476
477
478
479
480
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 474
def disposition_param( name, default = nil )
if h = @header['content-disposition']
h[name] || default
else
default
end
end
|
#each(&block) ⇒ Object
346
347
348
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 346
def each( &block )
body_port().ropen {|f| f.each(&block) }
end
|
#each_destination(&block) ⇒ Object
Also known as:
each_dest
520
521
522
523
524
525
526
527
528
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 520
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
219
220
221
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 219
def each_field( &block )
@header.values.flatten.each(&block)
end
|
205
206
207
208
209
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 205
def
@header.each do |key, val|
[val].flatten.each {|v| yield key, v }
end
end
|
213
214
215
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 213
def ( &block )
@header.each_key(&block)
end
|
#each_part(&block) ⇒ Object
382
383
384
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 382
def each_part( &block )
parts().each(&block)
end
|
#epilogue ⇒ Object
366
367
368
369
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 366
def epilogue
parse_body
@epilogue.dup
end
|
#epilogue=(str) ⇒ Object
371
372
373
374
375
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 371
def epilogue=( str )
parse_body
@epilogue = str
str
end
|
#error_reply_addresses(default = nil) ⇒ Object
537
538
539
540
541
542
543
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 537
def error_reply_addresses( default = nil )
if s = sender(nil)
[s]
else
from_addrs(default)
end
end
|
#friendly_from(default = nil) ⇒ Object
214
215
216
217
218
219
220
221
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 214
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
206
207
208
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 206
def from( default = nil )
addrs2specs(from_addrs(nil)) || default
end
|
#from=(*strs) ⇒ Object
210
211
212
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 210
def from=( *strs )
set_string_array_attr 'From', strs
end
|
#from_addr(default = nil) ⇒ Object
55
56
57
58
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 55
def from_addr( default = nil )
addr, = from_addrs(nil)
addr || default
end
|
#from_address(default = nil) ⇒ Object
60
61
62
63
64
65
66
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 60
def from_address( default = nil )
if a = from_addr(nil)
a.spec
else
default
end
end
|
#from_addrs(default = nil) ⇒ Object
194
195
196
197
198
199
200
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 194
def from_addrs( default = nil )
if h = @header['from']
h.addrs
else
default
end
end
|
#from_addrs=(arg) ⇒ Object
Also known as:
from_address=
202
203
204
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 202
def from_addrs=( arg )
set_addrfield 'from', arg
end
|
#from_phrase(default = nil) ⇒ Object
70
71
72
73
74
75
76
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 70
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| attachment?(part) }
end
|
159
160
161
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 159
def
@header.dup
end
|
37
38
39
40
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 37
def ( name, default = nil )
h = @header[name.downcase] or return default
h.to_s
end
|
#in_reply_to(default = nil) ⇒ Object
306
307
308
309
310
311
312
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 306
def in_reply_to( default = nil )
if h = @header['in-reply-to']
h.ids
else
default
end
end
|
#in_reply_to=(*idstrs) ⇒ Object
314
315
316
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 314
def in_reply_to=( *idstrs )
set_string_array_attr 'In-Reply-To', idstrs
end
|
#inspect ⇒ Object
76
77
78
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 76
def inspect
"\#<#{self.class} port=#{@port.inspect} bodyport=#{@body_port.inspect}>"
end
|
#key?(key) ⇒ Boolean
Also known as:
include?, has_key?
271
272
273
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 271
def key?( key )
@header.key? key.downcase
end
|
#keys ⇒ Object
267
268
269
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 267
def keys
@header.keys
end
|
#main_type(default = nil) ⇒ Object
366
367
368
369
370
371
372
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 366
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
294
295
296
297
298
299
300
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 294
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=
302
303
304
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 302
def message_id=( str )
set_string_attr 'Message-Id', str
end
|
#mime_encode ⇒ Object
90
91
92
93
94
95
96
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 90
def mime_encode
if parts.empty?
mime_encode_singlepart
else
mime_encode_multipart true
end
end
|
#mime_encode_binary(body) ⇒ Object
114
115
116
117
118
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 114
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
120
121
122
123
124
125
126
127
128
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 120
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
98
99
100
101
102
103
104
105
106
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 98
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
108
109
110
111
112
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 108
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
335
336
337
338
339
340
341
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 335
def mime_version( default = nil )
if h = @header['mime-version']
h.version || default
else
default
end
end
|
#mime_version=(m, opt = nil) ⇒ Object
343
344
345
346
347
348
349
350
351
352
353
354
355
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 343
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
546
547
548
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 546
def multipart?
main_type('').downcase == 'multipart'
end
|
#ordered_each ⇒ Object
236
237
238
239
240
241
242
243
244
245
246
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 236
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
377
378
379
380
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 377
def parts
parse_body
@parts
end
|
#preamble ⇒ Object
363
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 363
alias preamble body
|
#quoted_body ⇒ Object
350
351
352
353
354
355
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 350
def quoted_body
parse_body
@body_port.ropen {|f|
return f.read
}
end
|
#quoted_subject ⇒ Object
283
284
285
286
287
288
289
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 283
def subject( default = nil )
if h = @header['subject']
h.body
else
default
end
end
|
#ready_to_send ⇒ Object
64
65
66
67
68
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 64
def ready_to_send
delete_no_send_fields
add_message_id
add_date
end
|
#references(default = nil) ⇒ Object
318
319
320
321
322
323
324
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 318
def references( default = nil )
if h = @header['references']
h.refs
else
default
end
end
|
#references=(*strs) ⇒ Object
326
327
328
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 326
def references=( *strs )
set_string_array_attr 'References', strs
end
|
#reply_addresses(default = nil) ⇒ Object
533
534
535
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 533
def reply_addresses( default = nil )
reply_to_addrs(nil) or from_addrs(nil) or default
end
|
#reply_to(default = nil) ⇒ Object
236
237
238
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 236
def reply_to( default = nil )
addrs2specs(reply_to_addrs(nil)) || default
end
|
#reply_to=(*strs) ⇒ Object
240
241
242
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 240
def reply_to=( *strs )
set_string_array_attr 'Reply-To', strs
end
|
#reply_to_addrs(default = nil) ⇒ Object
224
225
226
227
228
229
230
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 224
def reply_to_addrs( default = nil )
if h = @header['reply-to']
h.addrs
else
default
end
end
|
#reply_to_addrs=(arg) ⇒ Object
232
233
234
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 232
def reply_to_addrs=( arg )
set_addrfield 'reply-to', arg
end
|
#send_text_to(smtp) ⇒ Object
43
44
45
46
47
48
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 43
def send_text_to( smtp )
do_send_to(smtp) do
ready_to_send
mime_encode
end
end
|
#send_to(smtp) ⇒ Object
37
38
39
40
41
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 37
def send_to( smtp )
do_send_to(smtp) do
ready_to_send
end
end
|
#send_to_0(smtp, from, to) ⇒ Object
58
59
60
61
62
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 58
def send_to_0( smtp, from, to )
smtp.ready(from, to) do |f|
encoded "\r\n", 'j', f, ''
end
end
|
#sender(default) ⇒ Object
261
262
263
264
265
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 261
def sender( default )
f = @header['sender'] or return default
a = f.addr or return default
a.spec
end
|
#sender=(str) ⇒ Object
267
268
269
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 267
def sender=( str )
set_string_attr 'Sender', str
end
|
#sender_addr(default = nil) ⇒ Object
245
246
247
248
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 245
def sender_addr( default = nil )
f = @header['sender'] or return default
f.addr or return default
end
|
#sender_addr=(addr) ⇒ Object
250
251
252
253
254
255
256
257
258
259
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 250
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=
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 382
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=
459
460
461
462
463
464
465
466
467
468
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 459
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
157
158
159
160
161
162
163
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 157
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
|
# File 'lib/action_mailer/vendor/tmail/net.rb', line 138
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
116
117
118
119
120
121
122
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 116
def strftime( fmt, default = nil )
if t = date
t.strftime(fmt)
else
default
end
end
|
167
168
169
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 167
def (key, param)
(hdr = self[key]) ? hdr[param] : nil
end
|
#sub_type(default = nil) ⇒ Object
374
375
376
377
378
379
380
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 374
def sub_type( default = nil )
if h = @header['content-type']
h.sub_type || default
else
default
end
end
|
#subject(to_charset = 'utf-8') ⇒ Object
276
277
278
279
280
281
282
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 276
def subject( default = nil )
if h = @header['subject']
h.body
else
default
end
end
|
#subject=(str) ⇒ Object
285
286
287
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 285
def subject=( str )
set_string_attr 'Subject', str
end
|
#to(default = nil) ⇒ Object
165
166
167
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 165
def to( default = nil )
addrs2specs(to_addrs(nil)) || default
end
|
#to=(*strs) ⇒ Object
177
178
179
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 177
def to=( *strs )
set_string_array_attr 'To', strs
end
|
#to_addrs(default = nil) ⇒ Object
129
130
131
132
133
134
135
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 129
def to_addrs( default = nil )
if h = @header['to']
h.addrs
else
default
end
end
|
#to_addrs=(arg) ⇒ Object
153
154
155
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 153
def to_addrs=( arg )
set_addrfield 'to', arg
end
|
#transfer_encoding(default = nil) ⇒ Object
Also known as:
encoding, content_transfer_encoding
431
432
433
434
435
436
437
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 431
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=
439
440
441
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 439
def transfer_encoding=( str )
set_string_attr 'Content-Transfer-Encoding', str
end
|
#type_param(name, default = nil) ⇒ Object
403
404
405
406
407
408
409
|
# File 'lib/action_mailer/vendor/tmail/facade.rb', line 403
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, true)
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?
43
44
45
46
47
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 43
def value?( val )
HeaderField === val or return false
[ @header[val.name.downcase] ].flatten.include? val
end
|
#values ⇒ Object
37
38
39
40
41
|
# File 'lib/action_mailer/vendor/tmail/obsolete.rb', line 37
def values
ret = []
each_field {|v| ret.push v }
ret
end
|
#values_at(*args) ⇒ Object
Also known as:
indexes, indices
275
276
277
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 275
def values_at( *args )
args.map {|k| @header[k.downcase] }.flatten
end
|
#write_back(eol = "\n", charset = 'e') ⇒ Object
88
89
90
91
|
# File 'lib/action_mailer/vendor/tmail/mail.rb', line 88
def write_back( eol = "\n", charset = 'e' )
parse_body
@port.wopen {|stream| encoded eol, charset, stream }
end
|