Sha256: a247608918a4f05676e5906aebd4ef824e67665f0c2767b12b4e9b5244845ad5

Contents?: true

Size: 1.81 KB

Versions: 11

Compression:

Stored size: 1.81 KB

Contents

module Padrino
  module Mailer
    ##
    # This represents a particular mail object which will need to be sent
    # A mail_object requires the mail attributes and the delivery_settings
    # 
    class MailObject
      ##
      # Initialize a new MailObject
      # 
      # ==== Examples
      # 
      #   Padrino::Mailer::MailObject.new(
      #     :subject => "Hey this is my subject",
      #     :to => "info@padrinorb.org", 
      #     :from => "foo@bar.com", 
      #     :body => "This is my body"
      #   ).deliver
      # 
      def initialize(mail_attributes={}, smtp_settings={})
        @mail_attributes = mail_attributes.dup
        @smtp_settings = smtp_settings.dup if smtp_settings.present?
      end

      ##
      # Constructs the delivery attributes for the message and then sends the mail
      # 
      # ==== Examples
      # 
      #   @mail_object.deliver
      # 
      def deliver
        @mail_attributes.reverse_merge!(:via => self.delivery_method.to_sym)
        @mail_attributes.reverse_merge!(:smtp => @smtp_settings) if using_smtp?
        self.send_mail(@mail_attributes)
      end

      protected
        ##
        # Returns the delivery method to use for this mail object
        # 
        # ==== Examples
        # 
        # @mo.delivery_method => :smtp || :sendmail
        # 
        def delivery_method
          @mail_attributes[:via] || (@smtp_settings.present? ? :smtp : :sendmail)
        end

        ##
        # Returns true if the mail object is going to be delivered using smtp
        # 
        def using_smtp?
          delivery_method.to_s =~ /smtp/
        end

        ##
        # Performs the actual email sending
        # 
        def send_mail(delivery_attributes)
          Delivery.mail(delivery_attributes) && true
        end
    end # MailObject
  end # Mailer
end # Padrino

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
padrino-mailer-0.9.6 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.9.5 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.9.4 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.9.3 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.9.2 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.9.1 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.9.0 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.8.5 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.8.4 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.8.3 lib/padrino-mailer/mail_object.rb
padrino-mailer-0.8.2 lib/padrino-mailer/mail_object.rb