Sha256: 4059e39103881aae2cdc7190fe75aef2977fe2af79905ea268ece95d1a79ad68

Contents?: true

Size: 1.69 KB

Versions: 4

Compression:

Stored size: 1.69 KB

Contents

require 'sanitize'
module Galakei::Email

  autoload :AuMailInterceptor, "galakei/email/au_mail_interceptor"

  GALAKEI_EMAIL_ADDRESS_PATTERNS = [
    /^.+@(.+\.)?pdx\.ne\.jp$/,
    /^.+@ezweb\.ne\.jp$/,
    /^.+@(?:softbank\.ne\.jp|disney\.ne\.jp)$/,
    /^.+@[dhtcrknsq]\.vodafone\.ne\.jp$/,
    /^.+@jp-[dhtcrknsq]\.ne\.jp$/,
    /^.+@emnet\.ne\.jp$/,
    /^.+@docomo\.ne\.jp$/ ]

  SANITIZE_OPTIONS = {
    :elements   => %w{font blink marquee br a div hr img},
    :attributes => {'a' => ['href'],
                    'font' => ['size','color'],
                    'marquee' => ['behaviour'],
                    'hr' => ['color'],
                    'div' => ['align'],
                    'img' => ['src'],
                    },
    :protocols  => {'a' => {'href' => ['http', 'https', 'mailto']}},
    :whitespace_elements => []
  }

  TAGS_TO_PROCESS = %w{h1 h2 h3 h4 h5 h6 p}.join(',')

  def self.galakei_email_address?(email)
    GALAKEI_EMAIL_ADDRESS_PATTERNS.any?{|p| p =~ email }
  end

  def self.to_galakei_email(html_email)
    doc = Nokogiri::HTML(html_email)
    doc.css(TAGS_TO_PROCESS).each do |node|
      node.name = "div"
      node.after("<br />")
    end
    #empty the <head>
    doc.css("head").each do |node|
      node.unlink
    end
    doc.css("img").each do |node|
      if node['src'] !~ /^cid:/
        node.after(doc.create_text_node(node['alt'])) if node['alt'].present?
        node.unlink
      end
    end
    encoding = doc.meta_encoding || "UTF-8"
    res = "<html><head>"
    res << "<meta http-equiv=\"Content-type\" content=\"text/html;charset=#{encoding}\" />"
    res << "</head><body>"
    res << Sanitize.clean(doc.to_s, SANITIZE_OPTIONS)
    res << "</body></html>"
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
galakei-0.15.2 lib/galakei/email.rb
galakei-0.15.1 lib/galakei/email.rb
galakei-0.15.0 lib/galakei/email.rb
galakei-0.14.4 lib/galakei/email.rb