aboutsummaryrefslogtreecommitdiffstats
path: root/actionmailer/lib/action_mailer/preview.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionmailer/lib/action_mailer/preview.rb')
-rw-r--r--actionmailer/lib/action_mailer/preview.rb50
1 files changed, 1 insertions, 49 deletions
diff --git a/actionmailer/lib/action_mailer/preview.rb b/actionmailer/lib/action_mailer/preview.rb
index 4888eac345..25ad7ee721 100644
--- a/actionmailer/lib/action_mailer/preview.rb
+++ b/actionmailer/lib/action_mailer/preview.rb
@@ -1,57 +1,9 @@
require 'active_support/descendants_tracker'
-require 'base64'
module ActionMailer
module Previews #:nodoc:
extend ActiveSupport::Concern
- class InlineAttachments #:nodoc:
- PATTERN = /src=(?:"cid:[^"]+"|'cid:[^']+')/i
-
- include Base64
-
- attr_reader :message
-
- def self.previewing_email(message)
- new(message).transform!
- end
-
- def initialize(message)
- @message = message
- end
-
- def transform!
- return message if html_part.blank?
-
- html_source.gsub!(PATTERN) do |match|
- if part = find_part(match[9..-2])
- %[src="#{data_url(part)}"]
- else
- match
- end
- end
-
- message
- end
-
- private
- def html_part
- @html_part ||= message.html_part
- end
-
- def html_source
- html_part.body.raw_source
- end
-
- def data_url(part)
- "data:#{part.mime_type};base64,#{urlsafe_encode64(part.body.raw_source)}"
- end
-
- def find_part(cid)
- message.all_parts.find{ |p| p.attachment? && p.cid == cid }
- end
- end
-
included do
# Set the location of mailer previews through app configuration:
#
@@ -69,7 +21,7 @@ module ActionMailer
# :nodoc:
mattr_accessor :preview_interceptors, instance_writer: false
- self.preview_interceptors = [ActionMailer::Previews::InlineAttachments]
+ self.preview_interceptors = [ActionMailer::InlinePreviewInterceptor]
end
module ClassMethods