Sha256: a75239a33e9f532d22db9bce39a452a97f70f10953011da1687081166ab82f66

Contents?: true

Size: 1.43 KB

Versions: 49

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true
module Mail
  module CheckDeliveryParams #:nodoc:
    class << self
      def check(mail)
        [ check_from(mail.smtp_envelope_from),
          check_to(mail.smtp_envelope_to),
          check_message(mail) ]
      end

      def check_from(addr)
        if Utilities.blank?(addr)
          raise ArgumentError, "SMTP From address may not be blank: #{addr.inspect}"
        end

        check_addr 'From', addr
      end

      def check_to(addrs)
        if Utilities.blank?(addrs)
          raise ArgumentError, "SMTP To address may not be blank: #{addrs.inspect}"
        end

        Array(addrs).map do |addr|
          check_addr 'To', addr
        end
      end

      def check_addr(addr_name, addr)
        validate_smtp_addr addr do |error_message|
          raise ArgumentError, "SMTP #{addr_name} address #{error_message}: #{addr.inspect}"
        end
      end

      def validate_smtp_addr(addr)
        if addr
          if addr.bytesize > 2048
            yield 'may not exceed 2kB'
          end

          if /[\r\n]/ =~ addr
            yield 'may not contain CR or LF line breaks'
          end
        end

        addr
      end

      def check_message(message)
        message = message.encoded if message.respond_to?(:encoded)

        if Utilities.blank?(message)
          raise ArgumentError, 'An encoded message is required to send an email'
        end

        message
      end
    end
  end
end

Version data entries

49 entries across 35 versions & 9 rubygems

Version Path
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.2.4 vendor/bundle/ruby/3.1.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.2.3 vendor/bundle/ruby/3.1.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.2.2 vendor/bundle/ruby/3.1.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.2.1 vendor/bundle/ruby/3.1.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.2.0 vendor/bundle/ruby/3.0.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.2.0 vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
date_n_time_picker_activeadmin-0.1.2 vendor/bundle/ruby/2.6.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
date_n_time_picker_activeadmin-0.1.1 vendor/bundle/ruby/2.6.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.7 vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.7 vendor/bundle/ruby/3.0.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
rails_mini_profiler-0.2.0 vendor/bundle/ruby/3.0.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/tdiary-5.1.4/vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.6 vendor/bundle/ruby/3.0.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/tdiary-5.1.5/vendor/bundle/ruby/3.0.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.5 vendor/bundle/ruby/2.7.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb
tdiary-5.1.5 vendor/bundle/ruby/3.0.0/gems/mail-2.7.1/lib/mail/check_delivery_params.rb