Module: EmailAble
- Extended by:
- ActiveSupport::Concern
- Includes:
- App47Logger
- Defined in:
- lib/app/models/concerns/email_able.rb
Overview
Objects that emails can be sent too…
Class Method Summary collapse
Instance Method Summary collapse
-
#bounced(reason) ⇒ Object
Set the email to a bounced status with the given reason.
-
#email_bounce_date(date = nil) ⇒ Object
Support legacy apps with old name.
-
#email_bounced? ⇒ Boolean
Has the email bounced?.
-
#gravatar_url(size = '32', default = 'mm') ⇒ Object
Return the gravatar URL based on email address.
-
#reset_bounce_status ⇒ Object
Reset the bounced email.
-
#valid_email? ⇒ Boolean
Is this a valid email to send to?.
Methods included from App47Logger
#clean_params, #delete_parameter_keys, #log_controller_error, #log_debug, log_debug, log_error, #log_error, log_exception, #log_message, log_message, #log_warn, log_warn, #mask_parameter_keys, #update_flash_messages
Class Method Details
.included(base) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/app/models/concerns/email_able.rb', line 8 def self.included(base) base.class_eval do field :email, type: String field :email_bounced_at, type: Time field :email_bounce_reason, type: String field :unconfirmed_email, type: String field :email_enabled, type: Boolean, default: true # # Validations # validates :email, presence: true, email_format: { strict: true } # # Callbacks # before_validation :downcase_email end end |
Instance Method Details
#bounced(reason) ⇒ Object
Set the email to a bounced status with the given reason
51 52 53 |
# File 'lib/app/models/concerns/email_able.rb', line 51 def bounced(reason) set email_bounced_at: Time.now.utc, email_bounce_reason: reason end |
#email_bounce_date(date = nil) ⇒ Object
Support legacy apps with old name
29 30 31 32 |
# File 'lib/app/models/concerns/email_able.rb', line 29 def email_bounce_date(date = nil) self.email_bounced_at = date if date.present? email_bounced_at end |
#email_bounced? ⇒ Boolean
Has the email bounced?
44 45 46 |
# File 'lib/app/models/concerns/email_able.rb', line 44 def email_bounced? email_bounced_at.present? end |
#gravatar_url(size = '32', default = 'mm') ⇒ Object
Return the gravatar URL based on email address
72 73 74 |
# File 'lib/app/models/concerns/email_able.rb', line 72 def gravatar_url(size = '32', default = 'mm') "https://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(email)}?s=#{size}&d=#{default}" end |
#reset_bounce_status ⇒ Object
Reset the bounced email
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/app/models/concerns/email_able.rb', line 58 def reset_bounce_status return unless SystemConfiguration.mailgun_configured? && email_bounced? reset_url = "https://api.mailgun.net/v3/#{SystemConfiguration.smtp_domain}/bounces/#{CGI.escape(email)}" RestClient.delete(reset_url, user: 'api', password: SystemConfiguration.mailgun_api_key) rescue RestClient::Exception => error log_error "Unable to reset email bounce status: #{inspect}", error ensure set email_bounced_at: nil, email_bounce_reason: nil end |
#valid_email? ⇒ Boolean
Is this a valid email to send to?
37 38 39 |
# File 'lib/app/models/concerns/email_able.rb', line 37 def valid_email? email_enabled? && !email_bounced? end |