Sha256: 97239587f5d312fa6882f22d079135c9a27cb149eae055b888f8a8ee5d3bd20e

Contents?: true

Size: 1.91 KB

Versions: 1

Compression:

Stored size: 1.91 KB

Contents

module PgEngine
  class BaseMailer < ActionMailer::Base # rubocop:disable Rails/ApplicationMailer
    class MailNotDelivered < StandardError; end

    def default_url_options
      super.merge(PgEngine.site_brand.default_url_options)
    end

    before_action { @email_object = params[:email_object] }

    before_action do
      path = Rails.application.assets.find_asset(logo_footer_name).filename
      png_data = File.read(path)
      attachments.inline[logo_footer_name] = png_data
      @footer_image_src = attachments[logo_footer_name].url
    end

    def logo_footer_name
      PgEngine.site_brand.mailer_base_footer_image_src
    end

    default from: lambda { |_mailer|
                    if @email_object.present?
                      email_address_with_name(@email_object.from_address, @email_object.from_name)
                    else
                      email_address_with_name(PgEngine.site_brand.default_mail_from,
                                              PgEngine.site_brand.default_mail_from_name)
                    end
                  },
            reply_to: ->(_mailer) { @email_object.reply_to if @email_object.present? },
            subject: ->(_mailer) { @email_object.subject if @email_object.present? },
            to: ->(_mailer) { @email_object.to if @email_object.present? }

    layout 'pg_layout/mailer'

    # default delivery_method: :smtp

    rescue_from StandardError do |err|
      pg_err err
      # TODO: agregar un backtrace
      @email_object.update_columns(status: :failed, status_detail: err.to_s) if @email_object.present?
    end

    protected

    def mail(*args)
      super.tap do |message|
        # message.mailgun_options = {
        #   'tag' => email.tags,
        #   'tracking-opens' => true
        # }
        message['email_object'] = @email_object if @email_object.present?
      end
    end
  end
end

#   # TODO: testear
#       si from está vacío
#       si body está vacío

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pg_rails-7.6.22.pre.1 pg_engine/app/mailers/pg_engine/base_mailer.rb