282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
|
# File 'lib/mail/message.rb', line 282
def reply(*args, &block)
self.class.new.tap do |reply|
if message_id
bracketed_message_id = "<#{message_id}>"
reply.in_reply_to = bracketed_message_id
if !references.nil?
refs = [references].flatten.map { |r| "<#{r}>" }
refs << bracketed_message_id
reply.references = refs.join(' ')
elsif !in_reply_to.nil? && !in_reply_to.kind_of?(Array)
reply.references = "<#{in_reply_to}> #{bracketed_message_id}"
end
reply.references ||= bracketed_message_id
end
if subject
reply.subject = /^Re:/i.match?(subject) ? subject : "Re: #{subject}"
end
if reply_to || from
reply.to = self[reply_to ? :reply_to : :from].to_s
end
if to
reply.from = self[:to].formatted.first.to_s
end
unless args.empty?
if args.flatten.first.respond_to?(:each_pair)
reply.send(:init_with_hash, args.flatten.first)
else
reply.send(:init_with_string, args.flatten[0].to_s.strip)
end
end
if block_given?
reply.instance_eval(&block)
end
end
end
|